Joe*_*ool 14 data-binding silverlight xaml styles
如果回答此问题的人是正确的,则不能将绑定作为Silverlight中样式的setter中的值.这是一种耻辱,因为我有4个文本块,它们都使用完全相同的绑定作为其Opacity属性.反正在某种意义上"风格"他们的Opacity属性是否所有四个都指向相同的绑定?否则,我必须单独设置每个Opacity属性.在我的情况下,它更糟糕 - 所有四个共享其他属性绑定,这意味着每个TextBlock声明相当长,但它们几乎都是相同的(它们的属性绑定,即).我知道我可以在代码隐藏中简明地设置所有共享属性绑定,但是如果有的话,我想要一个XAML解决方案.
谢谢!
Ant*_*nes 11
这是它的完成方式.您使用a ContentControl并将其指定ControlTemplate为静态资源: -
<Grid.Resources>
<ControlTemplate x:Key="CommonTextBlock" TargetType="ContentControl">
<TextBlock Opacity="{Binding SomeOpacity}" Text="{TemplateBinding Content}" />
</ControlTemplate>
<Grid.Resource>
<ContentControl Content="{Binding SomeTextValue}" Template="{StaticResource CommonTextBlock}" />
<ContentControl Content="{Binding SomeOtherTextValue}" Template="{StaticResource CommonTextBlock}" />
Run Code Online (Sandbox Code Playgroud)
现在,您可以根据需要将其绑定到控件模板中的其他属性.
这种方法可以扩展到Style: -
<Grid.Resources>
<ControlTemplate x:Key="CommonTextBlock" TargetType="ContentControl">
<TextBlock Opacity="{Binding SomeOpacity}" Text="{TemplateBinding Content}" />
</ControlTemplate>
<Style x:Key="CommonTextBlockStyle" TargetType="ContentControl">
<Setter Property="Template" Value="{StaticResource CommonTextBlock}" />
<Setter Property="Foreground" Value="Blue" />
</Style>
<Grid.Resource>
<ContentControl Content="{Binding SomeTextValue}" Style="{StaticResource CommonTextBlockStyle}" />
<ContentControl Content="{Binding SomeOtherTextValue}" Style="{StaticResource CommonTextBlockStyle}" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12743 次 |
| 最近记录: |