2013-04-26 51 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