代码之家  ›  专栏  ›  技术社区  ›  Artur Carvalho

在带有混合的列表框项的数据模板中为IsSelected设置WPF触发器

  •  2
  • Artur Carvalho  · 技术社区  · 17 年前

    当我选择一个listboxItem时,我想更改前景颜色,我使用了这段代码:

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

    here .

    ,如果不钻入xaml,他怎么能做到呢?

    非常感谢。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Alan Le    17 年前

    Expression Blend中的触发器设计器只允许添加和修改事件触发器和属性触发器。我还没有找到用Blend添加DataTriggers的方法。我也不确定如何使用Blend设置RelativeSource绑定。我总是将XAML代码交给测试,并将Blend用于其他所有操作。

        2
  •  2
  •   irobot barryjones    17 年前

    <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文件中创建一个资源字典,在其中你可以收集设计器的所有样式。然后,您可以将该资源字典与控件或应用程序的主要资源合并。