带有Blend的ListBox项的DataTemplate中的IsSelected的WPF触发器

时间:2009-03-05 15:29:30

标签: wpf listbox datatemplate expression-blend

我想在选择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,他会怎么做呢?

谢谢

2 个答案:

答案 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用于其他所有内容。