2013-04-26 52 views
4

我使用带值转换器的多重绑定来提供我的DataContext中项目集合的直观显示。这里是XAML的片段;如何排序使用MultiBinding转换器的DataGridTextColumn

<DataGrid.Columns> 
    <DataGridTextColumn x:Name="Column1" 
         SortMemberPath="{Binding Path=SomeDataModelProperty}"> 
    <DataGridTextColumn.Binding> 
     <MultiBinding Converter="{StaticResource MyCustomConverter}"> 
      <Binding Path="SomeDataModelProperty" /> 
      <Binding RelativeSource="{RelativeSource Self}" Path="ActualWidth" /> 
      <!-- Other bindings --> 
     </MultiBinding> 
    </DataGridTextColumn.Binding> 
</DataGridTextColumn> 

SortMemberPath结合是这样的,我可以在我的DataContext属性进行排序。但是,我得到的输出窗口

Cannot find governing FrameworkElement or FrameworkContentElement for target element. 

谷歌搜索这个问题得到使用DXGrid by DevExpress结果上的错误,而不是一个使用标准的WPF数据网格。有谁知道提供排序到数据网格列的正确方法吗?

回答

7

我想通了,多亏了this article。最后它很简单;

<DataGridTextColumn x:Name="Column1" 
        SortMemberPath="SomeDataModelProperty"> 

即不使用绑定,只需直接指定属性名称即可。

+1

这对我有点帮助。但是,我需要根据转换器提供的值进行排序,而不是数据中的固定路径(我的转换器根据第三个属性给出了两个不同的属性之一)。建议? – 2015-08-17 20:20:46

+1

看起来'SortMemberPath'只是一个字符串,网格控件本身会将其解析为列名,所以绑定不是前进的方向。我可以建议的唯一事情就是将网格控件绑定到预先分类的集合,比如通过“CollectionViewSource”或其他东西。 – Steztric 2015-08-18 16:30:04