2010-05-27 37 views
0

我正在玩WPF和數據綁定,我想知道以下內容。 我定義了幾個PropertyGroupDescriptions,但現在我想知道如何從IValueConverter讀取PropertyName。 這可能嗎?WPF - 在IValueConverter中獲取PropertyName

+0

你的用法是?你傳遞給轉換器的是什麼? – 2010-05-27 18:24:44

+0

它在DataGrid中用於分組。我想調整頭根據其屬性 – Oxymoron 2010-05-27 18:36:28

+0

這不工作,因爲我的預期,太糟糕:( – Oxymoron 2010-05-27 19:11:11

回答

1

你不行。 IValueConverter interface沒有任何採用正在轉換的屬性的方法。

它可能是不錯的傳遞給ConvertConvertBack方法PropertyInfoPropertyDescriptor實例,但設計師並沒有覺得有必要。

解決此問題的唯一方法是在代碼中設置IValueConverter實現,然後在構建實現​​時,可以傳遞IValueConverter接口實現所附加的屬性。

+0

只是參考從propertygroupdescription – Oxymoron 2010-05-27 19:07:41

+0

轉換器不是工作,因爲編號想要 你能詳細說明你的解決方案? – Oxymoron 2010-05-27 19:20:32

+0

@Oxymoron :您必須通過代碼完成此操作,並在實現IValueConverter的類上使用屬性來指示您正在使用值轉換器的屬性。 – casperOne 2010-05-27 20:47:28

0

總有一種通過綁定的ConverterParameter傳遞名字的廉價方式,儘管這並不是一種「乾淨」的方式。

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

看來,錯了。