我想在选择listboxItem时更改Foreground颜色,并使用这段代码完成:
<DataTrigger Binding="{Binding
RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
<Setter TargetName="descriptionTB" Property="Foreground" Value="#000"/>
</DataTrigger>
您可以找到答案here。
但如果我想让设计师在 Blend 中这样做,那么如果不钻进xaml,他会怎么做呢?
谢谢
答案 0 :(得分:2)
也许我误解了这个问题,但是你不能只为descriptionTB创建一个样式资源,让设计师只处理那个样式定义而不是绑定?
<DataTrigger Binding="..">
<Setter TargetName="descriptionTB" Property="Style" Value="{StaticResource DescriptionTextBoxStyle}" />
</DataTrigger>
在控件或窗口的resources部分中添加样式定义:
<Style TargetType="{x:Type TextBox}" x:Key="DescriptionTextBoxStyle">
<Setter Property="Foreground" Value="#000" />
</Style>
如果您想进一步将设计器与UI的机制隔离开来,您可以在单独的xaml文件中创建资源字典,您可以在其中收集适用于设计人员的所有样式。然后,您可以将该资源字典与控件或应用程序的主要资源合并。
答案 1 :(得分:2)
阿图尔,
Expression Blend中的触发器设计器仅允许添加和修改EventTriggers和Property触发器。我还没有找到一种方法来添加Blend的DataTriggers。我也不确定如何使用Blend设置RelativeSource Binding。我总是将代码交给XAML进行测试,并将Blend用于其他所有内容。