C# 同一类的两个实例的绑定属性,非wpf
我有一个类,它有很多实例。我需要将一个实例的属性绑定到另一个实例。所以在我的例子中,我需要实例b的Symbol属性绑定到实例a的Symbol。所以如果a符号改变,b符号会立即改变。最简单的解决方案是什么C# 同一类的两个实例的绑定属性,非wpf,c#,.net,C#,.net,我有一个类,它有很多实例。我需要将一个实例的属性绑定到另一个实例。所以在我的例子中,我需要实例b的Symbol属性绑定到实例a的Symbol。所以如果a符号改变,b符号会立即改变。最简单的解决方案是什么 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var a = new MyCl
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var a = new MyClass ();
var b = new MyClass();
a.Symbol = "A";
b.Symbol = a.Symbol; // Not work!
a.Symbol = "B";
MessageBox.Show(b.Symbol);
}
}
public class MyClass
{
private string _symbol;
public string Symbol
{
get { return _symbol; }
set
{
_symbol = value;
}
}
}
}
请试试这个。。通过在MyClass上添加附加属性,并告诉该类b obj依赖于一个obj。并在符号设置器中更新从属对象符号
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var a = new MyClass ();
var b = new MyClass();
a.DependentObj = b;
a.Symbol = "A";
//b.Symbol = a.Symbol; // Not work!
a.Symbol = "B";
MessageBox.Show(b.Symbol);
}
}
public class MyClass
{
private MyClass _dependentObj;
private string _symbol;
public MyClass DependentObj
{
get { return _dependentObj; }
set
{
_dependentObj = value;
}
}
public string Symbol
{
get { return _symbol; }
set
{
_symbol = value;
//Here add the update code
if(DependentObj !=null)
{
DependentObj._symbol = value;
}
}
}
}
没有办法做到你想要的。a、 Symbol和b.Symbol过去指向相同的值,但一旦更改a.Symbol的值,它们现在就不同了 如果将a.Symbol和b.Symbol保持指向同一对象,并更改该对象,则可以实现所需。不能使用字符串,因为字符串是不可变的。但是您可以使用一些字符串包装器-我将在这里使用StringBuilder,因为它是内置的:
a.Symbol = new StringBuilder("a");
b.Symbol = a.Symbol;
a.Symbol.Clear();
a.Symbol.Append("b");
b.Symbol.Dump();
当然,您可以使用自己的包装器,而不是使用StringBuilder。您甚至可以使用运算符重载自动将其从字符串转换为字符串。如果这对您有效,请将其标记为已回答。