繁体   English   中英

DataBinding RadioButton IsSelected仅工作一次

[英]DataBinding RadioButton IsSelected only works once

我的数据绑定有问题。 我正在使用MVVM Light。

当我在视图模型中的其中一个布尔值的设置器上设置断点并选择相应的单选按钮时,调试器将暂停,一切看起来都很好。

然后,当我继续时,选择另一个单选按钮,然后再次选择第一个单选按钮,调试器不会停止。 怎么了?

我有两个两个单选按钮:

            <RadioButton  Margin="5" Grid.Row="1" Content="Browser cookies" GroupName="loginmethod" IsChecked="{Binding IsBrowserCookiesChecked}"/>
            <RadioButton  Margin="5" Grid.Row="2" Content="Username + password" GroupName="loginmethod" IsChecked="{Binding IsUsernamePasswordChecked}"/>

我在视图模型中将它们限制为两个单独的布尔值,如下所示:

   public const string IsUsernamePasswordCheckedPropertyName = "IsUsernamePasswordChecked";

    private bool _isUsernamePasswordChecked = false;
    public bool IsUsernamePasswordChecked
    {
        get
        {
            return _isUsernamePasswordChecked;
        }

        set
        {
            if (_isUsernamePasswordChecked == value)
            {
                return;
            }

            RaisePropertyChanging(IsUsernamePasswordCheckedPropertyName);
            _isUsernamePasswordChecked = value;
            RaisePropertyChanged(IsUsernamePasswordCheckedPropertyName);
        }
    }

    public const string IsBrowserCookiesCheckedPropertyName = "IsBrowserCookiesChecked";

    private bool _isBrowserCookiesChecked = true;

    public bool IsBrowserCookiesChecked    
    {
        get
        {
            return _isBrowserCookiesChecked;
        }

        set
        {
            if (_isBrowserCookiesChecked == value)
            {
                return;
            }

            RaisePropertyChanging(IsBrowserCookiesCheckedPropertyName);
            _isBrowserCookiesChecked = value;
            RaisePropertyChanged(IsBrowserCookiesCheckedPropertyName);
        }
    }

我发现,当您在单选按钮上进行数据绑定时,为每个按钮赋予不同的GroupName要容易GroupName这样它们就不会互相影响,然后仅通过绑定来处理每个单选按钮选择的设置和取消设置。 例如,您可以只在视图模型上公开一个布尔值,将一个单选按钮绑定到该布尔值,然后将另一个单选按钮绑定到同一个布尔值 ,但使用反向布尔转换器 或将属性设为枚举,然后将每个单选按钮分配给该属性,但将其枚举赋予布尔转换器 这样,您就可以拥有更少的属性,而不必为视图模型担心。

当您提供单选按钮时,相同的GroupName WPF会在每次更改一个属性时尝试使其他属性混乱,并且您会得到一些丑陋的循环和奇怪的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM