如何在app.xaml中将datagrid SelectedIndex设置为-1

时间:2017-10-06 07:59:54

标签: c# wpf xaml datagrid app.xaml

所以我在一个wpf窗口中有多个DataGrids,在代码隐藏中我将每个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中有一个样式,所有Datagrids都使用:

<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时,将选择Datagrids的第一行。 所以我的问题是,是否可以在AdminGridStyle中将SelectedIndex属性设置为-1,如果是,如何?

1 个答案:

答案 0 :(得分:2)

如果您不想选择SelectedIndex中的任何项目,则根本不需要设置DataGrid属性。

只需从IsSynchronizedWithCurrentItem

中删除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>