c# - 在 WP7 中绑定(bind) ToggleButton 的 IsChecked 属性

标签 c# .net windows-phone-7 windows-phone-7.1 togglebutton

我的 WP7 应用程序中有这个 ToggleButton,我将其绑定(bind)到 ViewModel 中的属性。我还有一个 ToggleButton 命令,它在单击按钮时起作用。

根据该命令的结果,我设置了绑定(bind)到 ToggleButton.IsChecked 属性的属性。但无论我将属性设置为什么,切换按钮都有自己的生命,只是在未选中和选中之间切换。这是预期的行为还是错误?

似乎切换按钮在点击时失去了绑定(bind),这是真的吗?我希望它绑定(bind)的原因是我并不总是想更改选中状态,因为我的命令中的逻辑可能会失败,例如网络已关闭,因此无法在后端设置我想要的内容,等等。

这个问题有什么解决方法吗?

Xaml:

<ToggleButton x:Name="ToggleButton" Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding IsToggleButtonChecked}, Mode=OneWay}" Command="{Binding ToggleButtonCommand, Mode=OneWay}" CommandParameter="{Binding ToggleButtonCommandParameter}"/>

样式根据状态设置按钮的图像。该命令在单击按钮时执行逻辑,并且如前所述,将 IsToggleButtonChecked 设置为所需值。我在 IsChecked 上都尝试过 OneWay 和 TwoWay,但我看不出有什么不同。

View 模型:

public const string IsToggleButtonCheckedPropertyName = "IsToggleButtonChecked";

    private bool _isToggleButtonChecked;

    public bool IsToggleButtonChecked
    {
        get { return _isToggleButtonChecked; }

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

            _isToggleButtonChecked = value;

            RaisePropertyChanged(IsToggleButtonCheckedPropertyName);
        }
    }

每次我想更改 ToggleButton 的选中状态时都会设置此属性。

最佳答案

确保 ToggleButton 收到您对绑定(bind)属性所做的任何更改的通知。

XAML

<ToggleButton Click="OnClicked"
              IsChecked="{Binding IsChecked, Mode=TwoWay}" />

C#

private bool _isChecked = false;
public bool IsChecked
{
  get { return _isChecked; }
  set 
  {
    if( value != _isChecked ) {
      _isChecked = value;
      NotifyPropertyChanged( "IsChecked" );
    }
  }
}

在后面的代码中设置您的逻辑 IsChecked = false; 以取消选中按钮。

关于c# - 在 WP7 中绑定(bind) ToggleButton 的 IsChecked 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7743074/

相关文章:

c# - IEntityChangeTracker 错误的多个实例

c# - 包含具有无限循环的线程的对象的垃圾收集

javascript - 未捕获的类型错误 : Cannot read property 'document' of undefined

c# - XML 序列化期间缺少 SecurityProtocolType.Ssl3 枚举值

c# - MVVM Light 和 SQL Server CE 在 View 模型中生成代码

c# - 使用 HtmlAgilityPack 从 WP7 上的 HTML 获取文本

c# - 如何在 C# 中将连续日期范围列表切入财政年度列表?

c# - ServiceStack Redis 最新列表(按日期)

c# - 执行并行分解时发生溢出异常

c# - 绑定(bind)/绑定(bind)两个 LongListSelectors 的滚动位置