2017-10-06 2 views
3

J'ai donc plusieurs DataGrids dans une seule fenêtre wpf et dans le codebehind j'ai défini la propriété SelectedIndex de chaque DataGrid à -1.Comment définir DataGrid SelectedIndex à -1 dans app.xaml

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    dgPackaging.ItemsSource = vm.getPackaging(); 
    dgUsers.ItemsSource = vm.getUsers(); 
    dgFarmers.ItemsSource = vm.getAllFarmers(); 
    dgProducts.ItemsSource = vm.getAllProducts(); 
    dgPurchaseOrder.ItemsSource = vm.getAllPurchasOrders(); 
    dgPODescription.ItemsSource = vm.PurchaseOrderDetails; 
    dgCustomers.ItemsSource = vm.getAllCustomers(); 

    dgFarmers.SelectedIndex = -1; 
    dgUsers.SelectedIndex = -1; 
    dgPackaging.SelectedIndex = -1; 
    dgProducts.SelectedIndex = -1; 
    dgPurchaseOrder.SelectedIndex = -1; 
    dgCustomers.SelectedIndex = -1; 
} 

J'ai un style dans mon app.xaml que tous les datagrids utilisent:

<Style x:Key="AdminGridStyle" TargetType="DataGrid" BasedOn="{StaticResource dataGridStyle}"> 
    <Setter Property="Margin" Value="3"/> 
    <Setter Property="RowHeight" Value="40"/> 
    <Setter Property="IsSynchronizedWithCurrentItem" Value="true"/> 
    <Setter Property="Grid.ColumnSpan" Value="2"/> 
    <Setter Property="Grid.RowSpan" Value="8"/> 
    <Setter Property="SelectedIndex" Value="-1"/> 
</Style> 

Je suis en mesure de définir la valeur de la propriété SelectedIndex à un nombre supérieur ou égal à zéro. Lorsque je définis la valeur de la propriété sur -1, la première ligne des Datagrids est sélectionnée. Donc ma question est, est-il possible de définir la propriété SelectedIndex à -1 dans le AdminGridStyle, et si oui, comment?

+0

Pourquoi ne pas * ne pas * définir la propriété SelectedIndex du tout si vous ne voulez pas un élément pour être sélectionné? – mm8

+0

@ mm8 Si je supprime l'SelectedIndex du codebehind et de l'App.xaml et exécute le programme, la première ligne de chaque DataGrid est toujours sélectionnée – Tyron

+0

Que faire si vous supprimez le setter IsSynchronizedWithCurrentItem? – mm8

Répondre

2

Vous n'avez pas besoin de définir la propriété SelectedIndex si vous ne souhaitez pas sélectionner d'élément dans DataGrid (s).

Il suffit de retirer le poseur de IsSynchronizedWithCurrentItem votre Style:

<Style x:Key="AdminGridStyle" TargetType="DataGrid" BasedOn="{StaticResource dataGridStyle}"> 
    <Setter Property="Margin" Value="3"/> 
    <Setter Property="RowHeight" Value="40"/> 
    <Setter Property="Grid.ColumnSpan" Value="2"/> 
    <Setter Property="Grid.RowSpan" Value="8"/> 
    <Setter Property="SelectedIndex" Value="-1"/> 
</Style>