路径填充属性绑定不稳定的行为?

时间:2011-08-10 21:44:49

标签: wpf xaml path fill

在尝试使用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>

有人可以告诉我原因吗?

1 个答案:

答案 0 :(得分:3)

如果您想要更改样式,请不要在路径上设置任何Fill因为dependency property value precedence会覆盖您的样式。

将初始Fill值移动到样式的Setter