在我的程序中,我需要根据属性的值更改矩形的宽度和高度。
我无法使用数据触发器在矩形上指定初始宽度和高度,因为它会覆盖矩形。
如何在不覆盖数据触发的情况下在设计器中显示矩形?
<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>
答案 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" />