WPF单选按钮/MVVM绑定问题

WPF单选按钮/MVVM绑定问题,wpf,xaml,data-binding,mvvm,radio-button,Wpf,Xaml,Data Binding,Mvvm,Radio Button,我已经搜索并发现了几个建议的解决方案,但我仍然无法实现这一点: 我正在使用.NET4.5、WPF和MVVM 我想实现三个单选按钮,允许用户选择要查看的方法(主要、次要、第三)。用户界面如下所示: [1][2][3](我在这里有一张图片,但是,显然,除非我有10个代表,否则我不能发布。) 我的XAML: <StackPanel Grid.Column="4" Orientation="Horizontal"> <RadioButton x:Name="rb1" Style="

我已经搜索并发现了几个建议的解决方案,但我仍然无法实现这一点:

我正在使用.NET4.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>

Radio1按钮的样式:(其他按钮显然类似)


我的视图模型为每个单选按钮的状态公开bool属性,如每个单选按钮的IsChecked属性中所示。如图所示,我也定义了命令

由于某些原因,绑定到每个单选按钮上IsChecked属性的bool属性从未被调用。(既不是getter也不是setter)。页面上有各种各样的其他控件,绑定也像它们一样工作。UI部分似乎工作正常。显示按钮状态的正确按钮图像,它们按照预期相互排斥地工作。但与我的视图模型没有交互

我尝试过拉出命令绑定,想知道它们是否会碍事,但没有改变。我尝试过使用转换器,但从未调用过转换器

我还想一个按钮被禁用,如果没有分配的方法。(也就是说,如果只定义了主方法和辅助方法,则应禁用“3”单选按钮。我希望命令绑定能对此有所帮助。)


我错过了什么?实现这一点的最佳方式是什么?(除了单选按钮以外的控件?

它在我的计算机上工作,可能您需要检查数据源或查看visual studio的输出窗口。

没关系。。。有一个遗留的DataContext分配妨碍了我们。一旦我把它清理干净,它就按预期工作了

很抱歉打扰你。。。就像你一样。。这里没什么可看的

<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>