2017-10-06 38 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> 
相关问题