【问题标题】:Binding class in class property in WPF C# with Datacontext使用 Datacontext 在 WPF C# 中的类属性中绑定类
【发布时间】:2023-03-16 19:12:01
【问题描述】:

如何在类属性中访问类中的属性。 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>

【问题讨论】:

    标签: c# wpf datacontext


    【解决方案1】:

    表达式

    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";
        }
    
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-28
      • 2011-03-31
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      • 2016-03-13
      相关资源
      最近更新 更多