Silverlight:如何在 setter 中为样式使用绑定(bind)(或等效的解决方法)

标签 silverlight xaml data-binding styles

如果回答的人this question是的,您不能将绑定(bind)作为值放在 Silverlight 中的样式中的 setter 中。真可惜,因为我有 4 个文本 block ,它们都对它们的不透明度属性使用完全相同的绑定(bind)。无论如何在某种意义上“设计”他们的 Opacity 属性,以便他们四个都指向同一个绑定(bind)?否则,我必须单独设置每个 Opacity 属性。就我而言,情况更糟——所有四个都共享其他属性绑定(bind),这意味着每个 TextBlock 声明都非常长,但它们实际上都是相同的(即它们的属性绑定(bind))。我知道我可以在代码隐藏中简洁地设置他们所有的共享属性绑定(bind),但如果有的话,我想要一个 XAML 解决方案。

谢谢!

最佳答案

这是它的完成方式。您使用 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}" />

现在,您可以根据需要将其他属性绑定(bind)到控制模板中。

这种方法可以扩展到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}" />

关于Silverlight:如何在 setter 中为样式使用绑定(bind)(或等效的解决方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4878189/

相关文章:

wpf - 有没有一种简单的方法可以绑定(bind)到 WPF 中的父行?

asp.net - 在 ASP .NET 页面生命周期中何时触发 DataBinding 事件?

python - PyQt5 中使用 QML 实现前后端分离

wpf - IronPython 或 IronRuby 是否非常适合 WPF/Silverlight 中的 MVVM 模式?

xaml - 更改 VisualState 中的值

wpf - PageFunction<List<string>> - 如何在 xaml 中定义?

c# - 绑定(bind)到 Xceed 图表

silverlight - 在 Silverlight 中计算选取框类型动画的速度

c# - 自定义控件上的视觉状态管理器

wpf - ListBox MVVM 中的 ClearSelection