2

当我选择一个 listboxItem 时,我想改变前景色,我用这段代码做到了:

<DataTrigger Binding="{Binding  
RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
                            <Setter TargetName="descriptionTB" Property="Foreground" Value="#000"/>
</DataTrigger>

你可以在这里找到答案。

但是,如果我想让设计师在Blend中做到这一点,他将如何在不深入 xaml 的情况下做到这一点?

谢谢

4

2 回答 2

2

也许我误解了这个问题,但你不能只为 descriptionTB 创建一个样式资源,让设计师只处理那个样式定义而不是绑定吗?

<DataTrigger Binding="..">
    <Setter TargetName="descriptionTB" Property="Style" Value="{StaticResource DescriptionTextBoxStyle}" />
</DataTrigger>

在控件或窗口的资源部分添加样式定义:

<Style TargetType="{x:Type TextBox}" x:Key="DescriptionTextBoxStyle">
    <Setter Property="Foreground" Value="#000" />
</Style>

如果您想进一步将设计器与 UI 机制隔离开来,您可以在单独的 xaml 文件中创建资源字典,您可以在其中收集所有用于设计器的样式。然后,您可以将该资源字典与您的控件或应用程序的主要资源合并。

于 2009-03-05T16:07:59.903 回答
2

阿图尔,

Expression Blend 中的触发器设计器只允许添加和修改 EventTriggers 和 Property 触发器。我还没有找到使用 Blend 添加 DataTriggers 的方法。我也不确定如何使用 Blend 设置 RelativeSource Binding。我一直将 XAML 代码用于测试,并将 Blend 用于其他所有内容。

于 2009-03-05T23:21:58.597 回答