假设我正在使用WPF或Silverlight,并将ContentPresenter绑定到一个整数属性:
<ContentPresenter Content={Binding Score} />
如果分数是10,我希望显示一个金色的星星,否则只显示数字。因此,我有两种可能的数据模板:
<Path Fill="Gold" Data="..." />
<TextBlock Text="{Binding Score}" />
什么是最佳设置方式?使用绑定转换器?还是绑定到不同的对象,动态加载适当的数据模板XAML并根据Score的值创建正确的FrameworkElement?或者我错过了其他技巧-也许ContentPresenter不是应该使用的正确控件?我想知道是否可以像这样做某些事情,但它不喜欢ContentTemplate值中的嵌套绑定:
<StackPanel>
<StackPanel.Resources>
<DataTemplate x:Key="LowScore">
<TextBlock Text="{Binding Path=Score}" Foreground="Red" />
</DataTemplate>
<DataTemplate x:Key="HighScore">
<Path Fill="Gold" Data="M 0,0 l 10,0 l 5,-10 l 5,10 l 10,0 l -7,10 l 2,10 l -10,-5 l -10,5 l 2,-10 Z" />
</DataTemplate>
</StackPanel.Resources>
<ContentPresenter Content="{Binding Score}" ContentTemplate="{StaticResource ResourceKey={Binding ScoreTemplate}}">
</ContentPresenter>
</StackPanel>