2009-09-09 67 views
0

模板化控件我正在使用ValueConverter像这样:参数化ControlTemplate中使用的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

在这种情况下,我一般做两件事情之一:

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

2)属性添加到您的数据对象/视图模型/等格式字符串和格式化文本。然后绑定到格式化的文本属性。假设你正在使用INotifyPropertyChanged的,记住,你需要,只要你改变文字或格式字符串属性

+0

感谢您的反馈火PropertyChanged事件的格式化文本属性,这些都是我hadn一些好的可能性”没想到。 – 2009-09-09 20:02:06

相关问题