0

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

4

3 回答 3

1

你不能。IValueConverter 接口没有任何采用正在转换的属性的方法。

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

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

于 2010-05-27T18:44:23.150 回答
0

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

于 2010-05-27T18:40:25.877 回答
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;
        }

看来,错了。

于 2010-05-27T19:02:00.773 回答