我正在使用的模板化控件使用ValueConverter,如下所示:

<ListBox>
   <ListBox.Resources>
      <Controls:CodeDescriptionValueConverter x:Key="CodeDescriptionValueConverter"/>
   </ListBox.Resources>
   <ListBox.ItemTemplate>
      <DataTemplate>
         <TextBlock Text="{Binding Converter={StaticResource CodeDescriptionValueConverter}"/>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

这是我在generic.xaml中提供的默认外观。当我使用这个控件时,我想要将不同的格式字符串传递给转换器。有没有办法在不提供完整的ControlTemplate的情况下实现这一目标?

我的第一个想法是我可以将ConverterParameter与TemplateBinding一起使用到控件上的属性,但我发现ConverterParameters无法绑定。另一种选择可能是从ConvertTo方法访问控件,然后选择该属性。我不知道该怎么做。任何不需要在每次使用它时完全重新模板化控件的选项都会有所帮助(这是很多Xaml)。

有帮助吗?

解决方案

在这些情况下,我通常会做以下两件事之一:

1)绑定到可以访问要绑定到格式字符串的属性的对象。在转换器中,您将可以访问属性和格式字符串。

2)为数据对象/ viewmodel / etc添加属性以获取格式字符串和格式化文本。然后绑定到格式化的文本属性。假设您正在使用INotifyPropertyChanged,请记住,每当您更改文本或格式字符串属性时,您都需要为格式化文本属性触发propertychanged事件

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top