我有一个包含路径元素的border元素,当点击边框时,我想将路径的fill属性更改为另一种颜色。
我已经搜索了一个答案但是每个人似乎都使用控件模板和样式(通常用于按钮)来表示这种行为。有没有办法在不使用控件模板和样式的情况下更改颜色?
到目前为止我的代码如下,
<Border>
<Canvas Width="32" Height="32" Canvas.Left="0" Canvas.Top="0">
<Path x:Name="MyIcon" Width="30.5" Height="30.5"
Canvas.Left="0.75" Canvas.Top="0.750008"
Stretch="Fill" StrokeThickness="3"
StrokeLineJoin="Round" Stroke="{StaticResource PhoneForegroundBrush}"
Data="F1 M 15.9707,2.25001L 19.167,12.7919L 29.75,12.8197L 21.2578,19.1225L 24.4292,29.75L 16.0879,23.2829L 7.51911,29.6986L 10.831,19.2255L 2.25,12.7983L 12.7665,12.8177L 15.9707,2.25001 Z "/>
</Canvas>
<i:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Tapped">
<core:InvokeCommandAction Command="{Binding ChangeCommand}"/>
</core:EventTriggerBehavior>
</i:Interaction.Behaviors>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="Pressed">
<Storyboard>
<ColorAnimation Storyboard.TargetName="MyIcon"
Storyboard.TargetProperty="(Path.Fill).(SolidColorBrush.Color)"
To="#FFFF0000" Duration="0:0:0.5" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Border>
提前感谢您的帮助。
答案 0 :(得分:0)
在“已按下”VisualState
中,您正在设置Color
的{{1}}属性,该属性已分配给“MyIcon”的SolidColorBrush
属性{{1} }}。但是,您尚未将Fill
对象分配给“MyIcon”的Path
属性。因此,如果您尝试进入“按下”状态,它将无法找到SolidColorBrush
引用并将抛出异常。最简单的解决方案是在“MyIcon”Fill
中指定SolidColorBrush
另外我假设您已将Fill="Transparent"
放在Path
内,并且您在适当的位置呼叫Border
。