我已经搜索并发现了几个建议的解决方案,但我仍然无法完成这项工作:
我正在使用.Net 4.5,WPF,MVVM
我想实现三个单选按钮,以允许用户选择要查看的方法(Primary,Secondary,Tertiary)。用户界面如下所示:
[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>
我的视图模型公开了每个单选按钮状态的bool属性,如每个单元格的IsChecked属性所示。如上所示,我也定义了命令。
由于某种原因,绑定到每个单选按钮上的IsChecked属性的bool属性永远不会被调用。 (既不是吸气剂也不是吸气剂)。页面上有各种其他控件,绑定对他们来说就像花花公子一样。 UI位似乎工作正常。显示按钮状态的正确按钮图像,它们按预期相互排斥。但是我的视图模型没有互动。
我已经尝试拔出Command绑定,想知道它们是否妨碍了,但没有改变。我尝试过使用转换器,但从未调用转换器。
如果没有指定方法,我还希望禁用一个按钮。 (即如果只定义了Primary和Secondary方法,则应该禁用&#39; 3&#39;单选按钮。我希望Command绑定对此有所帮助。)
我错过了什么?实现这个的最佳方法是什么? (单选按钮以外的控件?)
答案 0 :(得分:0)
它可以在我的电脑上运行,也许您需要检查您的DataSource或从visual studio查看输出窗口。
答案 1 :(得分:0)
没关系......有一个遗留的DataContext任务妨碍了。一旦我清理了它,它就按预期工作了。
很抱歉打扰......因为你......没什么可看的......