WPF MVVM - 以编程方式触发数据网格排序方向的箭头

时间:2018-05-14 13:15:29

标签: c# wpf mvvm datagrid

默认情况下,当我的DataGrid加载时,我的数据将按ProductName asc排序。但是,gridview的ProductName标题不会显示向上箭头图标。无论如何,我是否以编程方式触发图标?

XAML:

<DataGrid x:Name="GridProduct" 
          ItemsSource="{Binding Path=ProductResult}" 
          Style="{StaticResource defaultDataGridStyle}" 
          CellStyle="{StaticResource defaultCellStyle}"
          ColumnHeaderStyle="{StaticResource defaultCellHeaderStyle}"> 
  <DataGrid.Columns>
       <DataGridTextColumn Header="Product Name" Binding="{Binding ProductName}" />
       <DataGridTextColumn Header="Product Price" Binding="{Binding ProducPrice}"/> 
  </DataGrid.Columns>
</DataGrid>

风格:

<Style x:Key="defaultCellHeaderStyle" TargetType="DataGridColumnHeader" BasedOn="{StaticResource MetroDataGridColumnHeader}">
    <Setter Property="FontSize" Value="16"></Setter>
    <Setter Property="Command" Value="{Binding Path=DataContext.SortCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
    <Setter Property="CommandParameter" Value="{Binding Path=Content, RelativeSource={RelativeSource Self}}"></Setter>
</Style>

<Style x:Key="defaultCellStyle" TargetType="DataGridCell" BasedOn="{StaticResource MetroDataGridCell}">
    <Setter Property="FontSize" Value="16"></Setter>
    <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
    <Setter Property="HorizontalAlignment" Value="Stretch"></Setter>
</Style>

MVVM:

public List<Product> ProductResult
{
    get
    {
        _productResult = _productResult.OrderBy(x => x.Name).ToList();
        return _productResult;
    }
}

2 个答案:

答案 0 :(得分:1)

将以下内容添加到DataGridTextColumn

SortDirection="Ascending" 

答案 1 :(得分:1)

如果要将有效排序与列上的视觉样式同步,这应该会有所帮助:

window.location.assign