【发布时间】:2014-06-19 14:55:06
【问题描述】:
我已经搜索并发现了几个建议的解决方案,但我仍然无法完成这项工作:
我正在使用 .Net 4.5、WPF、MVVM
我想实现三个单选按钮以允许用户选择要查看的方法(主要、次要、第三)。用户界面,如下所示:
[ 1 ] [ 2 ] [ 3 ](我有一张图片,在这里,但显然,除非我有 10 个代表,否则我不能发布它......)
我的 XAML:
<StackPanel Grid.Column="4" Orientation="Horizontal">
<RadioButton x:Name="rb1" Style="{StaticResource Radio1Button}" Command="{Binding Path=Select1ReceivingMethodCommand}" IsChecked="{Binding Path=ReceivingMethod1IsSelected}" />
<RadioButton x:Name="rb2" Style="{StaticResource Radio2Button}" Command="{Binding Path=Select2ReceivingMethodCommand}" IsChecked="{Binding Path=ReceivingMethod2IsSelected}" />
<RadioButton x:Name="rb3" Style="{StaticResource Radio3Button}" Command="{Binding Path=Select3ReceivingMethodCommand}" IsChecked="{Binding Path=ReceivingMethod3IsSelected}" />
</StackPanel>
Radio1Button 的样式:(显然其他类似)
<Style x:Key="Radio1Button" TargetType="{x:Type RadioButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<Image Name="Button_Image" Source="/Resources/1.Normal.png" SnapsToDevicePixels="True" Width="20" Height="20" />
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Source" Value="/Resources/1.Hover.png" TargetName="Button_Image" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Source" Value="/Resources/1.Disabled.png" TargetName="Button_Image" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Source" Value="/Resources/1.Pressed.png" TargetName="Button_Image" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我的视图模型公开了每个单选按钮状态的布尔属性,如每个单选按钮的 IsChecked 属性中所示。如前所述,我也定义了命令。
由于某种原因,绑定到每个单选按钮的 IsChecked 属性的 bool 属性永远不会被调用。 (既不是 getter 也不是 setter)。页面上有各种各样的其他控件,绑定对它们来说就像花花公子一样工作。 UI 位似乎工作正常。正确的按钮图像显示了按钮的状态,并且它们相互排他地发挥作用,正如预期的那样。但是我的视图模型没有交互。
我试过拉出 Command 绑定,想知道它们是否妨碍了我,但没有任何改变。我尝试过使用转换器,但从未调用过转换器。
如果没有分配方法,我还希望禁用一个按钮。 (即,如果只定义了 Primary 和 Secondary 方法,则应该禁用“3”单选按钮。我希望 Command 绑定对此有所帮助。)
我错过了什么?实现这一点的最佳方法是什么? (单选按钮以外的控件?)
【问题讨论】:
标签: wpf xaml data-binding mvvm radio-button