2012-06-25 106 views
5

我試圖對數值內容進行列排序。多重綁定轉換器正常工作。 此解決方案將設置SortMemberPath爲空DataGridColumn MultiBinding上的SortMemberPath

我已經嘗試了各種方法,並大量搜索互聯網。

爲安全起見,代碼已從原始版本修改。

<DataGridTemplateColumn x:Name="avgPriceColumn"> 
<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <TextBlock> 
      <TextBlock.Text> 
       <MultiBinding Converter="{StaticResource avgPriceConverter}"> 
        <Binding Path="NumberToDivideBy" /> 
        <Binding Path="TotalDollars" /> 
       </MultiBinding> 
      </TextBlock.Text> 
     </TextBlock> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 
<DataGridTemplateColumn.SortMemberPath> 
    <MultiBinding Converter="{StaticResource avgPriceConverter}"> 
     <Binding Path="NumberToDivideBy" /> 
     <Binding Path="TotalDollars" /> 
    </MultiBinding> 
</DataGridTemplateColumn.SortMemberPath> 
</DataGridTemplateColumn> 

編輯: 我找到一種方式來獲得數據綁定不multibinding工作,但排序仍然無法正常工作。由於DataGrid綁定到一個自定義類,因此我接受了整個值並將其轉換,從而減少了對MultiBinding的需求。

<DataGridTextColumn x:Name="avgPriceColumn" Binding="{Binding Converter={StaticResource avgPriceConverter}}" SortMemberPath="{Binding Converter={StaticResource avgPriceConverter}}" /> 

在這兩個這些選項SortMemberPath是默認設置爲綁定,所以我並不需要明確地定義它,因爲我有

然而這最終設置SortMemberPath值設置爲null,其適用於自定義約束,衝突我的代碼環境,並沒有排序。所以我仍然對更好的解決方案感興趣。

編輯:

改衝突的代碼的其他地方,以允許重複SortMemberPath的,不支持某些列排序,併爲某種關相鄰列值

回答

6

SortMemberPath期待一個屬性的名稱(例如「TotalDollars」)不是個人計算的行值。把它想像爲標題,你爲整列設置一次。你的轉換器會返回一個15這樣的數字,其中SortMemberPath想要一個綁定路徑字符串。浮現在腦海

兩個選項:

  1. 您的支持對象(例如「AveragePrice」)上提供一個計算的屬性並綁定到。不需要轉換器或分揀成員路徑。

    public double AveragePrice 
    { 
        get { return TotalDollars/NumberToDivideBy; } 
    } 
    
  2. 指定想在這個questionOnSorting事件處理程序。

希望它有幫助。 :)