使用宽度和高度的触发器时,在设计器中显示矩形

时间:2018-12-08 20:46:20

标签: c# wpf xaml

在我的程序中,我需要根据属性的值更改矩形的宽度和高度。

我无法使用数据触发器在矩形上指定初始宽度和高度,因为它会覆盖矩形。

如何在不覆盖数据触发的情况下在设计器中显示矩形?

<Rectangle Fill="{StaticResource Atom_Color_Blue}" Margin="5,0,0,0" Stroke="#181a1f" StrokeThickness="1">
    <Rectangle.InputBindings>
        <MouseBinding Gesture="LeftClick" Command="{Binding CommandSetColor}" CommandParameter="Blue" />
    </Rectangle.InputBindings>
    <Rectangle.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding NewTaskColor}" Value="Blue">
                    <Setter Property="Rectangle.Width" Value="18" />
                    <Setter Property="Rectangle.Height" Value="18" />
                </DataTrigger>
                <DataTrigger Binding="{Binding NewTaskColor}" Value="None">
                    <Setter Property="Rectangle.Width" Value="16" />
                    <Setter Property="Rectangle.Height" Value="16" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Rectangle.Style>
</Rectangle>

1 个答案:

答案 0 :(得分:1)

您应该阅读依赖项属性。 具体来说优先。 如果直接设置一个值,则该值不能通过数据触发或绑定更改。 如果将其设置为样式,则数据触发器可以更改它。

    <Rectangle Fill="Blue" Margin="5,0,0,0" Stroke="#181a1f" StrokeThickness="1">
        <Rectangle.InputBindings>
            <MouseBinding Gesture="LeftClick" Command="{Binding CommandSetColor}" CommandParameter="Blue" />
        </Rectangle.InputBindings>
        <Rectangle.Style>
            <Style>
                <Setter Property="Rectangle.Width" Value="18" />
                <Setter Property="Rectangle.Height" Value="18" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding NewTaskColor}" Value="Blue">
                        <Setter Property="Rectangle.Width" Value="18" />
                        <Setter Property="Rectangle.Height" Value="18" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding NewTaskColor}" Value="None">
                        <Setter Property="Rectangle.Width" Value="16" />
                        <Setter Property="Rectangle.Height" Value="16" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Rectangle.Style>
    </Rectangle>

请注意我添加的两个设置器。

        <Style>
            <Setter Property="Rectangle.Width" Value="18" />
            <Setter Property="Rectangle.Height" Value="18" />