使用转换器对DataGridTemplateColumn进行排序

时间:2012-04-05 14:35:21

标签: wpf vb.net sorting datagrid gridview-sorting

我最近正在开发一个使用WPF工具包(和扩展工具包)中的datagrid的WPF应用程序

我正在使用datagridtemplatecolumn,因为我在某些用户的某些值上显示了工具提示。其他列是datagridtextcolumns。

我可以通过在状态上添加sortmemberpath来排序状态,但status是一个数字(1,2,3,4,5 ..),我将这些数字转换为另一列的名称。如果我按这个sortmember路径排序,我首先得到1然后是2,然后是3等,但我想按字母顺序对转换后的值进行排序。

<Toolkit:DataGridTemplateColumn x:Name="dgtcStatus" Header="Status" SortMemberPath="Status_W52" Width="*">
  <Toolkit:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
      <TextBlock x:Name="Status" Text="{Binding Path=Status_W52, Converter={StaticResource StatusConverter}}">
        <TextBlock.ToolTip>
          <ToolTip Visibility="{Binding Path=Status_W52, Converter={StaticResource VisibilityConverter}}">
            <TextBlock Text="{Binding Path=Discription_W52, Converter={StaticResource DiscriptionConverter}}"/>
          </ToolTip>
        </TextBlock.ToolTip>
      </TextBlock>
    </DataTemplate>
  </Toolkit:DataGridTemplateColumn.CellTemplate>
</Toolkit:DataGridTemplateColumn>

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

您可以将Status_W52从int升级为更复杂的类型吗?

public Status_W52
{
   int NumericValue {get;set;}
   string Name {get;set;}
}

您的Converter将获取Status_W52的完整实例,通过“NumericValue”解析,返回您的int进行排序,但也可以更新传递的ref的“Name”属性,稍后您可以对其进行排序..