[英]How to apply same style to a group of controls based on binding value inside DataTemplate?
我最近开始学习Silverlight,不知道如何使它起作用。
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<StackPanel.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontWeight" Value="{Binding Path=FontWeight}"/>
</Style>
</StackPanel.Resources>
<TextBlock Text="{Binding Path=Name}" Margin="0,0,5,0"/>
<TextBlock Text="{Binding Path=Prefix}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
我要根据项目绑定值为StackPanel中的每个TextBlock设置FontWeigth属性。 而不是在每个TextBlock上复制它。
您不能将绑定表达式用作样式设置器值。 您只能在依赖对象上绑定到依赖属性。
TextBlock的各种字体属性是从其父树可视化树继承的。 通过将多个TextBlock元素添加到Usercontrol,然后在Usercontrol上设置FontWeight或FontSize属性,可以看到实际的效果。
因此,一种解决方案是在某些父元素上设置FontWeight并依靠继承。 不幸的是,您不能在StackPanel上设置FontWeight。 我将插入一个ContehtControl,如下所示:
<ComboBox.ItemTemplate>
<DataTemplate>
<ContentControl FontWeight="{Binding Path=FontWeight}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" Margin="0,0,5,0"/>
<TextBlock Text="{Binding Path=Prefix}"/>
</StackPanel>
</ContentControl>
</DataTemplate>
</ComboBox.ItemTemplate>
这应该工作!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.