【问题标题】:WPF checkbox IsChecked binding not workingWPF 复选框 IsChecked 绑定不起作用
【发布时间】:2013-10-27 21:14:04
【问题描述】:

我有这个问题,我的复选框 IsChecked 属性绑定不起作用。我用谷歌搜索,但人们说它应该是 TwoWay 绑定,这就是我正在使用的。

这是我的代码:

 <CheckBox Name="ckC" VerticalAlignment="Center"
           IsChecked="{Binding Path=LSMChannelEnable[2],
                               Mode=TwoWay,
                               UpdateSourceTrigger=PropertyChanged}" />

这是它背后的 C# 代码:

public bool[] LSMChannelEnable
{
    get
    {
        return this._liveImage.LSMChannelEnable;
    }
    set
    {
        this._liveImage.LSMChannelEnable = value;
        OnPropertyChanged("LSMChannelEnable");
        OnPropertyChanged("EnableChannelCount");
        OnPropertyChanged("LSMChannel");
    }
}

任何指针都非常感谢,

【问题讨论】:

  • 附带说明,WPF Checkbox 默认情况下已经是双向绑定的。

标签: c# wpf xaml checkbox binding


【解决方案1】:

这是因为您正在绑定到一个数组。将要绑定到单独属性的属性拉出。

Xaml:

IsChecked="{Binding Path=ButtonEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 

代码:

public bool ButtonEnabled
{
    get { return this._liveImage.LSMChannelEnable[2]; }
    set { this._liveImage.LSMChannelEnable[2] = value;
         OnPropertyChanged("ButtonEnabled");
    }
}

【讨论】:

  • 你的意思是“public bool ButtonEnabled”?
  • 您可能还想在“public bool[] LSMChannelEnable”的设置器中触发“OnPropertyChanged("ButtonEnabled")”。否则,如果您要为 LSMChannelEnable 分配不同的数组,按钮状态将不会反映可能更改的 bool 值。
  • @elgozo 如果保留数组,您是对的。一般来说,我不建议将所有数据存储在一个数组中。最好有单一属性
  • 谢谢!这当然有帮助!
【解决方案2】:

试试这个:

OnPropertyChanged("Item[]"); 

编译器在使用索引器时生成的属性。 见this blog post

【讨论】:

  • 谢谢!不过感觉楼上的比较好理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 2015-03-28
  • 2015-10-25
  • 2014-03-16
  • 1970-01-01
  • 2013-08-10
  • 2015-10-22
相关资源
最近更新 更多