【发布时间】:2014-12-04 15:19:35
【问题描述】:
我会尽量保持简洁。
我遇到了一个问题,我有一个带有 3 个单选按钮的双向数据绑定。我的问题是,一旦我更改了选择的单选按钮,我就会得到一种周期性的变化。那么发生了什么,我更改了更改源数据属性的单选按钮,但是源数据属性更改了绑定的其他 2 个属性,这反过来又更改了其他单选按钮,这些单选按钮也会调用这些属性的 PropertyChange 函数.如何修复它,使 PropertyChange 每次单选按钮开关只发生一次。
属性更改事件处理程序:
public class SolutionOptions : INotifyPropertyChanged
{
bool _direct;
bool _iterative;
bool _domain;
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
public bool Domain
{
get { return _domain; }
set
{
if (_domain == value) return;
_domain = value;
OnPropertyChanged("Domain");
}
}
public bool Iterative
{
get { return _iterative; }
set
{
if (_iterative == value) return;
_iterative = value;
OnPropertyChanged("Iterative");
}
}
public bool Direct
{
get { return _direct; }
set
{
if (_direct == value) return;
_direct = value;
OnPropertyChanged("Direct");
}
}
数据绑定代码:
this.radioButton_DirectSolver.DataBindings.Add("Checked", _ssf, "SolOptions.Direct");
this.radioButton_IterSolver.DataBindings.Add("Checked", _ssf, "SolOptions.Iterative");
this.radioButton_DomainDecomp.DataBindings.Add("Checked", _ssf, "SolOptions.Domain");
表格图片:
【问题讨论】:
-
你知道你只有1个吗?你需要 3 个。
-
@Blam 哎呀,我省略了 get 以减少代码。好像我错过了一个。
-
不要减少作为问题核心部分的代码。否则,绑定将失败,问题在于绑定。
-
你不应该骑自行车。奇怪的事情正在发生。尝试在 XAML 中绑定并发布。
-
我不知道如何在 XAML 中进行绑定。我没有 XAML 来绑定它。
标签: c# .net data-binding radio-button 2-way-object-databinding