对子元素中的控件属性做出反应

时间:2013-10-09 14:51:37

标签: wpf xaml triggers

我正在创建一个WPF UserControl,并在其中定义了一个名为“Orientation”的依赖项属性。属于Dock的类型允许我设置值Top,Bottom,Left和Right。 UserControl在其XAML中还包含Border元素。根据Orientation属性的值,边框应出现在一侧。这是我到目前为止定义的触发器:

<Trigger Property="Orientation" Value="Bottom">
    <Setter Property="BorderThickness" Value="0,1,0,0"/>
</Trigger>
<Trigger Property="Orientation" Value="Top">
    <Setter Property="BorderThickness" Value="0,0,0,1"/>
</Trigger>
<Trigger Property="Orientation" Value="Left">
    <Setter Property="BorderThickness" Value="0,0,1,0"/>
</Trigger>
<Trigger Property="Orientation" Value="Right">
    <Setter Property="BorderThickness" Value="1,0,0,0"/>
</Trigger>

我现在尝试在Border的样式中使用这些触发器,但是他们找不到Orientation属性。然后我尝试在UserControl的样式中使用它,TargetName设置为我的边框,但无法设置TargetName。

这个的正确XAML代码如何?

1 个答案:

答案 0 :(得分:1)

在边框样式中使用DataTrigger而不是Trigger例如

<DataTrigger Binding="{Binding Orientation, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="Bottom">
    <Setter Property="BorderThickness" Value="0,1,0,0"/>
</DataTrigger>

同样更新所有触发器