2012-06-25 13 views
5

Sto cercando di avere ordinamento colonna sul contenuto numerico. Convertitore multi-binding funziona bene. Questa soluzione imposta SortMemberPath su nullDataGridColumn SortMemberPath su MultiBinding

Ho provato una varietà di modi e ho setacciato Internet in modo sostanziale.

Il codice è stato modificato dall'originale per motivi di sicurezza.

<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> 

EDIT: Ho trovato un modo per ottenere l'associazione dati di lavorare senza MultiBinding, ma l'ordinamento ancora non funziona. Dato che DataGrid è associato a una classe personalizzata, prendo tutto il valore e ne converto, riducendo così la necessità di MultiBinding.

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

Su entrambe queste opzioni SortMemberPath è impostato di default per Binding quindi non ho bisogno di definire in modo esplicito come ho

Tuttavia questo finisce per impostare il valore su null SortMemberPath che sia in conflitto con i vincoli personalizzati applicabili a il mio ambiente di codice, e non ordina. Quindi sono ancora interessato a soluzioni migliori.

EDIT:

Modificato il codice in conflitto altrove per consentire SortMemberPath duplicati di, non supportano l'ordinamento su alcune colonne, e per un valore tipo off vicina colonne

risposta

6

SortMemberPath si aspetta il nome di una proprietà (es. "TotalDollars") non un singolo valore di riga calcolato. Pensala come l'intestazione, la imposti una volta per l'intera colonna. Il tuo convertitore restituirà un numero come 15 dove SortMemberPath vuole una stringa del percorso di binding.

due opzioni che vengono in mente:

  1. Fornire una proprietà calcolata sul vostro oggetto supporto (ad esempio "AveragePrice") e si legano a questo. Non è necessario alcun convertitore o percorso membro di ordinamento.

    public double AveragePrice 
    { 
        get { return TotalDollars/NumberToDivideBy; } 
    } 
    
  2. Specificare un gestore OnSorting evento come in questo question.

Spero che sia d'aiuto. :)

Problemi correlati