2010-05-27 3 views
0

Я играю с WPF и привязыванием данных, и мне интересно следующее. Я определил несколько PropertyGroupDescriptions, но теперь мне интересно, как читать PropertyName из IValueConverter. Возможно ли это?WPF - Получение PropertyName в IValueConverter

+0

Какое у вас использование? Что вы передаете конвертеру? –

+0

Он используется в DataGrid для группировки. Я хочу настроить заголовки в соответствии со своим свойством – Oxymoron

+0

, который не работает, как я и ожидал, слишком плохо :( – Oxymoron

ответ

1

Вы не можете. IValueConverter interface не имеет методов, которые принимают преобразованное свойство.

Это могло бы хорошо иметь PropertyInfo или PropertyDescriptor экземпляр передается в Convert и ConvertBack методов, но разработчики не считают нужным.

Единственное, что можно сделать, это установить реализацию IValueConverter в коде, а затем в построении реализации вы можете передать свойство, к которому привязана реализация интерфейса IValueConverter.

+0

Ill просто ссылается на конвертер из propertygroupdescription – Oxymoron

+0

, который не работает как id, хочет вы могли бы подробнее рассказать о своем решении? – Oxymoron

+0

@Oxymoron : Вам нужно будет сделать это с помощью кода и использовать свойства класса, который реализует IValueConverter, чтобы указать свойство, в котором вы используете преобразователь значений. – casperOne

0

Всегда существует дешевый способ передачи имени через конвертер конвертера привязки, хотя это не совсем «чистый» способ сделать это.

0

Может быть, я должен разработать немного больше. У меня есть следующие группы в моем XAML:

<CollectionViewSource x:Key="cvsTasks" Source="{StaticResource tasks}" Filter="CollectionViewSource_Filter" >    
      <CollectionViewSource.GroupDescriptions> 
       <PropertyGroupDescription PropertyName="ProjectName" /> 
       <PropertyGroupDescription PropertyName="TaskName" /> 
       <PropertyGroupDescription PropertyName="Complete" /> 
      </CollectionViewSource.GroupDescriptions> 

и

<TextBlock FontWeight="Bold" Text="{Binding Path=Name}"/> 

Теперь я хочу конвертер быть valled на имя, которое хорошо, но я только хочу, чтобы это на самом деле работает на имущество Полная. Какой был бы лучший способ сделать это?

Я заканчиваю с Fugly кодом, как:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      if (value != null) 
      { 
       if (value.GetType().Equals(typeof(Boolean))) 
       { 
        return (bool)value ? "Complete" : "Active"; 
       } 
       if (value.GetType().Equals(typeof(String))) 
       { 
        return value as string; 
       } 
      } 
      return null; 
     } 

Кажется, не так.

Смежные вопросы