Wpf 子控件的UserControl属性触发器
根据UserControl的IsEnabled属性(true/false),我希望其中的控件具有不同的颜色。我想用XAML的“魔力”做到这一点Wpf 子控件的UserControl属性触发器,wpf,xaml,Wpf,Xaml,根据UserControl的IsEnabled属性(true/false),我希望其中的控件具有不同的颜色。我想用XAML的“魔力”做到这一点 <UserControl.Resources> <Style x:Key="EnableDependent" TargetType="{x:Type Shape}"> <Style.Triggers> <Trigger Property="{Binding Path
<UserControl.Resources>
<Style x:Key="EnableDependent" TargetType="{x:Type Shape}">
<Style.Triggers>
<Trigger Property="{Binding Path=IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="True">
<Setter Property="Stroke" Value="White" />
</Trigger>
<Trigger Property="{Binding Path=IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="False">
<Setter Property="Stroke" Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
样式应用于绘制路径的视口中:
<Viewbox Grid.Column="3" Width="18" Margin="5,5,2,5" MouseEnter="Dispatch_MouseEnter" DockPanel.Dock="Right" Stretch="Uniform">
<Path Data="M0,1 L4,1 M2,0 L4,1 L2,2" Stretch="Fill" StrokeThickness="3" Width="12" Height="12" Style="{StaticResource EnableDependent}" />
</Viewbox>
我得到一个运行时异常,无法在触发器的“Property”属性中设置绑定
那么怎么做呢?使用
DataTrigger
而不是用于内部属性更改的普通触发器,它有一个绑定
-属性,您可以在其中执行此操作
<Style x:Key="EnableDependent" TargetType="{x:Type Shape}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="True">
<Setter Property="Stroke" Value="White" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="False">
<Setter Property="Stroke" Value="Black" />
</DataTrigger>
</Style.Triggers>
</Style>