Mar*_*ath 5 data-binding silverlight wpf datatemplate
说我正在使用WPF或Silverlight并将ContentPresenter绑定到整数属性:
<ContentPresenter Content={Binding Score} />
Run Code Online (Sandbox Code Playgroud)
如果得分为10,我想显示金星,否则只显示数字.基本上我有两个可能的数据模板:
<Path Fill="Gold" Data="..." />
<TextBlock Text="{Binding Score}" />
Run Code Online (Sandbox Code Playgroud)
设置它的最佳方法是什么?是否使用绑定转换器?或者绑定到另一个动态加载相应数据模板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>
Run Code Online (Sandbox Code Playgroud)
Mua*_*Dib 10
你可以使用模板选择器.这是关于Switch On The Code的一个很好的教程.基本上,模板选择器允许您根据所需的条件选择项目的模板.
| 归档时间: |
|
| 查看次数: |
6373 次 |
| 最近记录: |