<ContentPresenter Content={Binding Score} />
如果分数是10,我想显示一个金星,否则只显示数字。所以实际上我有两个可能的数据模板:
<Path Fill="Gold" Data="..." />
<TextBlock Text="{Binding Score}" />
最好的方法是什么?是使用绑定转换器吗?或者绑定到动态加载适当数据模板xaml并根据Score的值生成正确的FrameworkElement的不同对象?或者是我遗漏了另一个技巧——也许ContentPresenter不是正确的控件?
<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>