0

我正在处理的模板化控件使用 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 的情况下实现这一点?

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

4

1 回答 1

1

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

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

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

于 2009-09-09T19:57:01.630 回答