使用 Datacontext 在 WPF C# 中绑定 class class 属性
Binding class in class property in WPF C# with Datacontext
如何在 class 属性 中访问 class 中的 属性。
Value2 有效,Value1 无效。如果我在 codeBehind 中绑定 Value1,则 Value1 有效。实际代码:
class Class1 : INotifyPropertyChanged
{
private string _Value1;
public string Value1
{
get { return _Value1; }
set { _Value1 = value; NotifyPropertyChanged("Value1"); }
}
[...]
}
Class2.cs:
class Class2 : INotifyPropertyChanged
{
private string _Value2;
public string Value2
{
get { return _Value2; }
set { _Value2 = value; NotifyPropertyChanged("Value2"); }
}
public Class2()
{
Class1 class1 = new Class1();
class1.Value1 = "Value 1 set";
Value2 = "Value2 set";
}
[...]
}
MainWindow.xaml.cs
public partial class MainWindow : Window
{
Class2 class2 = new Class2();
public MainWindow()
{
InitializeComponent();
this.DataContext = class2;
}
}
MainWindow.xaml
<Grid>
<TextBox Text="{Binding Path=class1.Value1}" />
<TextBox Text="{Binding Path=Value2}" />
</Grid>
表达式
Class1 class1 = new Class1();
在Class2构造函数中声明了一个局部变量,在构造函数之外没有任何意义。
您可能希望在 Class2
中有一个类型为 Class1
的 属性:
class Class2 : INotifyPropertyChanged
{
private Class1 class1;
public Class1 Class1
{
get { return class1; }
set { class1 = value; NotifyPropertyChanged(nameof(Class1)); }
}
public Class2()
{
Class1 = new Class1 { Value1 = "Value 1 set" };
Value2 = "Value2 set";
}
...
}
通过
绑定
<TextBox Text="{Binding Path=Class1.Value1}" />
也许 属性 甚至不需要可写:
class Class2 : INotifyPropertyChanged
{
public Class1 Class1 { get; } = new Class1();
public Class2()
{
Class1.Value1 = "Value 1 set";
Value2 = "Value2 set";
}
...
}
如何在 class 属性 中访问 class 中的 属性。 Value2 有效,Value1 无效。如果我在 codeBehind 中绑定 Value1,则 Value1 有效。实际代码:
class Class1 : INotifyPropertyChanged
{
private string _Value1;
public string Value1
{
get { return _Value1; }
set { _Value1 = value; NotifyPropertyChanged("Value1"); }
}
[...]
}
Class2.cs:
class Class2 : INotifyPropertyChanged
{
private string _Value2;
public string Value2
{
get { return _Value2; }
set { _Value2 = value; NotifyPropertyChanged("Value2"); }
}
public Class2()
{
Class1 class1 = new Class1();
class1.Value1 = "Value 1 set";
Value2 = "Value2 set";
}
[...]
}
MainWindow.xaml.cs
public partial class MainWindow : Window
{
Class2 class2 = new Class2();
public MainWindow()
{
InitializeComponent();
this.DataContext = class2;
}
}
MainWindow.xaml
<Grid>
<TextBox Text="{Binding Path=class1.Value1}" />
<TextBox Text="{Binding Path=Value2}" />
</Grid>
表达式
Class1 class1 = new Class1();
在Class2构造函数中声明了一个局部变量,在构造函数之外没有任何意义。
您可能希望在 Class2
中有一个类型为 Class1
的 属性:
class Class2 : INotifyPropertyChanged
{
private Class1 class1;
public Class1 Class1
{
get { return class1; }
set { class1 = value; NotifyPropertyChanged(nameof(Class1)); }
}
public Class2()
{
Class1 = new Class1 { Value1 = "Value 1 set" };
Value2 = "Value2 set";
}
...
}
通过
绑定<TextBox Text="{Binding Path=Class1.Value1}" />
也许 属性 甚至不需要可写:
class Class2 : INotifyPropertyChanged
{
public Class1 Class1 { get; } = new Class1();
public Class2()
{
Class1.Value1 = "Value 1 set";
Value2 = "Value2 set";
}
...
}