2015-02-12 3 views
3

У меня есть MultiBinding, который прекрасно работает,
Я хочу, чтобы иметь возможность сортировать определенный столбец, он отображает вес: ширина, ч: высота
Насколько я понимаю, мне нужно построить пользовательский класс IComparer, который будет использоваться для сравнения.
Вот мой XAMLПользовательские Сортировать по XamDataGrid для MultiBinding

<igWPF:UnboundField Label="Output&#10;Width/Height" Width="auto"> 
    <igWPF:Field.Settings> 
    <igWPF:FieldSettings SortComparer="{StaticResource SortWidthHeightComparer }"> 
     <igWPF:FieldSettings.CellValuePresenterStyle> 
     <Style TargetType="{x:Type igWPF:CellValuePresenter}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
      <ControlTemplate TargetType="{x:Type igWPF:CellValuePresenter}" > 
      <TextBlock Margin="3"> 
      <TextBlock.Text> 
       <MultiBinding Converter="{StaticResource settingsBdsToStringConverter}"> 
       <Binding Path="DataItem.Key"/> 
       <Binding Path="DataContext.SelectedPipeMode" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type igWPF:XamDataGrid}}"/> 
       </MultiBinding> 
      </TextBlock.Text> 
      </TextBlock> 
      </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     </Style> 
     </igWPF:FieldSettings.CellValuePresenterStyle> 
     </igWPF:FieldSettings> 
    </igWPF:Field.Settings> 
    </igWPF:UnboundField> 

Вот мой MultiBinding конвертер

class SettingsOutputResToStringConverter : IMultiValueConverter 
    { 

     public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
     { 
      if (values[1] is Mode && values[0] is ConfigurationKey) 
      { 
       var pMode = (Mode)values[1]; 
       var key = values[0] as ConfigurationKey; 
       var res = key.GetOutput(pMode); 
       return String.Format("W: {0}, H: {1}", res.Width, res.Height); 
      } 
      return String.Empty; 
     } 
     public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
     { 
      return null; 
     } 
    } 

Однако моя проблема заключается в том, как я прохожу multibind результат в классе Comparer

class SortWidthHeightComparer : IComparer 
    { 
     public int Compare(object x, object y) 
     { 
      return 1; 
     } 
    } 

object x и object y, всегда равны нулю

ответ

1

Гилад, Я нашел этот пост: http://www.infragistics.com/community/forums/t/17878.aspx

Похоже, что простое решение. Я собираюсь попробовать тот же подход для фильтрации записей.

+0

Я получаю его, мне просто нужно удалить шаблон управления – Gilad

+0

@ Gilad ... У меня также есть такая же проблема. У меня есть UnboundFields, и у каждого есть Control Template, и теперь я хочу добавить Custom Sort. Ссылка говорит, что ни одно из решений не работает. Вы действительно решили проблему. если да, сообщите нам, как вы это сделали – Ziggler