C# 数据绑定单选按钮
我会尽量使这篇文章简明扼要 我有一个问题,我有一个双向数据绑定与3个单选按钮。我的问题是,只要我改变选择的单选按钮,我就会得到某种周期性的改变。因此,我改变了单选按钮,它改变了源数据属性,但是源数据属性改变了其他两个绑定的属性,这反过来又改变了其他单选按钮,它也对这些属性调用了PropertyChange函数。如何修复它,使每个单选按钮开关的属性更改只发生一次 属性已更改事件处理程序:C# 数据绑定单选按钮,c#,.net,data-binding,radio-button,2-way-object-databinding,C#,.net,Data Binding,Radio Button,2 Way Object Databinding,我会尽量使这篇文章简明扼要 我有一个问题,我有一个双向数据绑定与3个单选按钮。我的问题是,只要我改变选择的单选按钮,我就会得到某种周期性的改变。因此,我改变了单选按钮,它改变了源数据属性,但是源数据属性改变了其他两个绑定的属性,这反过来又改变了其他单选按钮,它也对这些属性调用了PropertyChange函数。如何修复它,使每个单选按钮开关的属性更改只发生一次 属性已更改事件处理程序: public class SolutionOptions : INotifyPropertyChanged {
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");
表格图像:
首先尝试将其添加到所有设置器中
if (_domain == value) return;
因此,如果属性未更改,则不调用OnPropertyChanged。总的来说,这是一种良好的做法
第二个(仅当第一个按钮不起作用时)将每个按钮放在一个单独的组中,这样它们就不会互相呼叫,并在您的代码中处理将其他按钮设置为false的问题。每个单选按钮?或者单选按钮组?你试过第一个吗?只有在第一个不起作用时才尝试第二个。在第二组中,每个按钮都在一个单独的组中(因此它们不在同一组中)。我发现单选按钮实际上不在组框中。但是,现在单选按钮无法正确切换,并导致其他问题。我想我可以手动实现单选按钮更新。你知道你只有一个get吗?你需要3个。@Blam-Oops,我省略了get以减少代码。好像我漏掉了一个。不要减少代码,这是问题的核心部分。否则绑定将失败,问题是绑定。你不应该让循环继续。奇怪的事情正在发生。尝试在XAML中绑定并发布。我不知道如何在XAML中绑定。我没有绑定它的XAML。