2017-10-06 65 views
3

因此,我在單個wpf窗口中有多個DataGrid,並在代碼隱藏中將每個DataGrid的SelectedIndex屬性設置爲-1。如何在app.xaml中將datagrid SelectedIndex設置爲-1

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; 
} 

我在我的App.xaml風格,所有的DataGrid中使用:

<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> 

我能夠SelectedIndex屬性值設置爲任意數量大於或等於零。 當我將屬性值設置爲-1時,Datagrid的第一行被選中。 所以我的問題是,是否有可能在AdminGridStyle中將SelectedIndex屬性設置爲-1,如果是這樣,怎麼辦?

+0

你爲什麼不*不*設置SelectedIndex屬性可言,如果你不希望任何項目被選中? – mm8

+0

@ mm8如果我從代碼隱藏和App.xaml中刪除SelectedIndex並運行該程序,則每個數據網格的第一行仍處於選中狀態 – Tyron

+0

如果刪除IsSynchronizedWithCurrentItem設置器,該怎麼辦? – mm8

回答

2

如果您不想選擇DataGrid(s)中的任何項目,則根本不需要設置SelectedIndex屬性。

只要從Style刪除IsSynchronizedWithCurrentItem二傳手:

<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> 
相關問題