如何排序使用MultiBinding转换器的DataGridTextColumn
问题描述:
我使用带值转换器的多重绑定来提供我的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数据网格。有谁知道提供排序到数据网格列的正确方法吗?
答
我想通了,多亏了this article。最后它很简单;
<DataGridTextColumn x:Name="Column1"
SortMemberPath="SomeDataModelProperty">
即不使用绑定,只需直接指定属性名称即可。
这对我有点帮助。但是,我需要根据转换器提供的值进行排序,而不是数据中的固定路径(我的转换器根据第三个属性给出了两个不同的属性之一)。建议? – 2015-08-17 20:20:46
看起来'SortMemberPath'只是一个字符串,网格控件本身会将其解析为列名,所以绑定不是前进的方向。我可以建议的唯一事情就是将网格控件绑定到预先分类的集合,比如通过“CollectionViewSource”或其他东西。 – Steztric 2015-08-18 16:30:04