相关疑难解决方法(0)

MVVM:将单选按钮绑定到视图模型?

编辑:问题已在.NET 4.0中修复.

我一直在尝试使用IsChecked按钮将一组单选按钮绑定到视图模型.在审查其他帖子后,该IsChecked属性似乎根本不起作用.我已经整理了一个简短的演示,可以重现这个问题,我在下面列出了这个问题.

这是我的问题:使用MVVM绑定单选按钮是否有直接可靠的方法?谢谢.

附加信息:IsChecked物业不起作用有两个原因:

  1. 选择按钮后,组中其他按钮的IsChecked属性不会设置为false.

  2. 选择按钮后,第一次选择按钮后,其自身的IsChecked属性不会被设置.我猜测绑定在第一次点击时被WPF破坏了.

演示项目:以下是重现问题的简单演示的代码和标记.创建一个WPF项目并使用以下内容替换Window1.xaml中的标记:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
    <StackPanel>
        <RadioButton Content="Button A" IsChecked="{Binding Path=ButtonAIsChecked, Mode=TwoWay}" />
        <RadioButton Content="Button B" IsChecked="{Binding Path=ButtonBIsChecked, Mode=TwoWay}" />
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

使用以下代码(hack)替换Window1.xaml.cs中的代码,该代码设置视图模型:

using System.Windows;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            this.DataContext = …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding mvvm radio-button

61
推荐指数
3
解决办法
6万
查看次数

标签 统计

binding ×1

c# ×1

mvvm ×1

radio-button ×1

wpf ×1