Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将简单字符串值绑定到文本框?_C#_.net_Wpf_Xaml - Fatal编程技术网

C# 如何将简单字符串值绑定到文本框?

C# 如何将简单字符串值绑定到文本框?,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我正在使用wpf。我想用xaml.cs类中初始化的简单字符串类型值绑定一个文本框。文本框没有显示任何内容。以下是我的XAML代码: <TextBox Grid.Column="1" Width="387" HorizontalAlignment="Left" Grid.ColumnSpan="2" Text="{Binding Path=Name2}"/> 你从不设定你财产的价值。仅定义set{{{u name2=“abcdef”;}在实际执行set操作之前,不会实际设置属性的值

我正在使用wpf。我想用xaml.cs类中初始化的简单字符串类型值绑定一个文本框。
文本框
没有显示任何内容。以下是我的XAML代码:

<TextBox Grid.Column="1" Width="387" HorizontalAlignment="Left" Grid.ColumnSpan="2" Text="{Binding Path=Name2}"/>

你从不设定你财产的价值。仅定义
set{{{u name2=“abcdef”;}
在实际执行set操作之前,不会实际设置属性的值

您可以将代码更改为如下所示,以使其正常工作:

public partial class EntitiesView : UserControl
{
    private string _name2;
    public string Name2
    {
        get { return _name2; }
        set { _name2 = value; }
    }

    public EntitiesView()
    {
        Name2 = "abcdef";
        DataContext = this;
        InitializeComponent();
    }
}
此外,正如人们所提到的,如果您打算稍后修改属性的值并希望UI反映它,则需要实现
INotifyPropertyChanged
界面:

public partial class EntitiesView : UserControl, INotifyPropertyChanged
{
    private string _name2;
    public string Name2
    {
        get { return _name2; }
        set
        {
            _name2 = value;
            RaisePropertyChanged("Name2");
        }
    }

    public EntitiesView()
    {
        Name2 = "abcdef";
        DataContext = this;
        InitializeComponent();
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void RaisePropertyChanged(string propertyName)
    {
        var handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

你从不设定你财产的价值。仅定义
set{{{u name2=“abcdef”;}
在实际执行set操作之前,不会实际设置属性的值

您可以将代码更改为如下所示,以使其正常工作:

public partial class EntitiesView : UserControl
{
    private string _name2;
    public string Name2
    {
        get { return _name2; }
        set { _name2 = value; }
    }

    public EntitiesView()
    {
        Name2 = "abcdef";
        DataContext = this;
        InitializeComponent();
    }
}
此外,正如人们所提到的,如果您打算稍后修改属性的值并希望UI反映它,则需要实现
INotifyPropertyChanged
界面:

public partial class EntitiesView : UserControl, INotifyPropertyChanged
{
    private string _name2;
    public string Name2
    {
        get { return _name2; }
        set
        {
            _name2 = value;
            RaisePropertyChanged("Name2");
        }
    }

    public EntitiesView()
    {
        Name2 = "abcdef";
        DataContext = this;
        InitializeComponent();
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void RaisePropertyChanged(string propertyName)
    {
        var handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

为什么不添加视图模型并将您的属性保留在那里

视图模型类

实体视图用户控件


为什么不添加视图模型并将您的属性保留在那里

视图模型类

实体视图用户控件


只需在
EntitiesView
构造函数中添加这一行即可

DataContext = this;

只需在
EntitiesView
构造函数中添加这一行即可

DataContext = this;

你能发布你的XAML吗?@Coder我发布了。请参阅代码的第一行。你认为你在哪里设置值到某个东西?我想通过绑定在文本框中显示值@罗兰肖。为此,我编写了Text=“{Binding Path=Name2}”。。。。我做错了吗?你需要实现
INotifyPropertyChanged
。你能发布你的XAML吗?@Coder我发布了它。请参阅代码的第一行。您认为您在哪里设置了值?我想通过绑定在文本框中显示值@罗兰肖。为此,我编写了Text=“{Binding Path=Name2}”。。。。我做错了吗?您需要实现
INotifyPropertyChanged
。很抱歉这么晚才回复,但是表单控件如何订阅PropertyChangedEventHandler?很抱歉这么晚才回复,但是表单控件如何订阅PropertyChangedEventHandler?