WPF - 在IValueConverter中获取PropertyName

时间:2010-05-27 18:14:33

标签: c# ivalueconverter

我正在玩WPF和数据绑定,我想知道以下内容。 我定义了一些PropertyGroupDescriptions,但现在我想知道如何从IValueConverter中读取PropertyName。 这可能吗?

3 个答案:

答案 0 :(得分:1)

你做不到。 IValueConverter interface没有任何方法可以获取正在转换的属性。

PropertyInfoPropertyDescriptor实例传递给ConvertConvertBack方法可能会很好,但设计人员认为没有必要。< / p>

解决这个问题的唯一方法是在代码中设置IValueConverter实现,然后在构造实现时,可以传递附加IValueConverter接口实现的属性。

答案 1 :(得分:0)

总是通过绑定的ConverterParameter传递名称的廉价方式,尽管这并不是一种“干净”的方式。

答案 2 :(得分: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}"/>

现在我想在Name上对转换器进行限制,这很好,但我只希望它实际上在属性Complete上工作。这样做的最佳方式是什么?

我最终得到的代码如下:

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

似乎,错了。