【发布时间】:2016-04-04 16:14:20
【问题描述】:
我的 app.xaml 现在有以下工作代码...
<Style x:Key="likeActionButton" TargetType="ToggleButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
</VisualState>
<VisualState x:Name="PointerOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="HoverBackground"
Storyboard.TargetProperty = "Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="PressedBackground"
Storyboard.TargetProperty = "Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border>
<Grid>
<Image Width="25" Source="ms-appx:///Assets\ActionIcons\like-action.png"></Image>
<Image x:Name="HoverBackground" Width="25" Source="ms-appx:///Assets\ActionIcons\like-action-onHover.png" Visibility="Collapsed"></Image>
<Image x:Name="PressedBackground" Width="25" Source="ms-appx:///Assets\ActionIcons\like-action-on-pressed.png" Visibility="Collapsed"></Image>
</Grid>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我正在调用这个模板:
<ToggleButton Grid.Column="4" HorizontalAlignment="Center"
Style="{StaticResource likeActionButton}"
IsChecked="{Binding LikeState}"
Tapped="Favourite_Tapped"></ToggleButton>
LikeState 的绑定没有我想要的那么完美。
这很难解释,但我会试一试...
我可以选择和取消选择ToggleButton,背景图像将始终翻转。
LikeState 后面的绑定似乎适用于属性,但不适用于图像。这意味着当数据加载和布尔值LikeState = true 属性ToggleButton.IsChecked = true 但背景图像是VisualState x:Name="Normal" 的图像。
再说一遍……
我正在使用LikeState = true 加载数据。如果我第一次单击 ToggleButton,背景图像不会改变,但代码隐藏文件会执行 isChecked = true 的代码
第二次单击 ToggleButton 时,背景图像现在会更改为 VisualState x:Name="Pressed"
那么我必须做些什么来设置正确的背景图像依赖于动态填充的属性isChecked={Binding LikeState}
干杯,
克里斯
【问题讨论】:
-
尝试 Mode=TwoWay 绑定
标签: c# wpf xaml windows-phone-8.1