我正在玩 WPF 和数据绑定,我想知道以下内容。我定义了一些 PropertyGroupDescriptions,但现在我想知道如何从 IValueConverter 中读取 PropertyName。这可能吗?
问问题
1805 次
3 回答
1
你不能。IValueConverter 接口没有任何采用正在转换的属性的方法。
将PropertyInfo或PropertyDescriptor实例传递给Convert和ConvertBack方法可能会很好,但设计人员认为没有必要。
解决此问题的唯一方法是在代码中设置 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 回答