在尝试使用MVC的所有功能时,我遇到了一些奇怪的行为...... :) 我试图将一个简单的Path Fill属性绑定到某个值,但不能成功。
作为一个小例子是值得的...
以下是如何简单再现:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Path Name="p" Data="M 0,0 h 30 v 30 h -30 v -30" Fill="Beige">
<Path.Style>
<Style TargetType="{x:Type Path}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=ch}" Value="True">
<Setter Property="Path.Fill" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
<CheckBox Name="ch" Margin="35,12,-35,-12" />
</Grid>
</Window>
另一个问题,它适用于此布局,但不适用于类似的布局(从声明中删除填充):
<Path Name="p" Data="M 0,0 h 30 v 30 h -30 v -30">
<Path.Style>
<Style TargetType="{x:Type Path}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=ch}" Value="True">
<Setter Property="Path.Fill" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked, ElementName=ch}" Value="False">
<Setter Property="Path.Fill" Value="Blue"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
有人可以告诉我原因吗?
答案 0 :(得分:3)
如果您想要更改样式,请不要在路径上设置任何Fill
因为dependency property value precedence会覆盖您的样式。
将初始Fill
值移动到样式的Setter
。