c# - 如何将简单的字符串值绑定(bind)到文本框?

标签 c# .net wpf xaml

我正在使用 wpf。我想用一个在 xaml.cs 类中初始化的简单字符串类型值绑定(bind)一个文本框。 TextBox没有显示任何东西。这是我的 XAML 代码:

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

C# 代码是这样的:
public partial class EntitiesView : UserControl
{
    private string _name2;
    public string Name2
    {
        get { return _name2; }
        set { _name2 = "abcdef"; }
    }
    public EntitiesView()
    {
        InitializeComponent();
    }
}

最佳答案

你永远不会设定你的属性(property)的值(value)。简单定义set { _name2 = "abcdef"; }在您实际执行设置操作之前,不会实际设置您的属性的值。

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

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 反射(reflect)它,则需要实现 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));
        }
    }
}

关于c# - 如何将简单的字符串值绑定(bind)到文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17764323/

相关文章:

c# - 如何访问 EPPlus 中的工作表?

WPF KeyGestures - 绑定(bind)非字母数字键

c# - 使用 ListBox 通过 MVVM 导航 TextBox

c# - 执行具有可变参数和返回类型的 C# 函数列表

c# - 编译错误 - 类型具有 [Application] 属性和 [assembly :Application] attribute

C# Linq 与柯里化(Currying)

.net - _ViewStart.cshtml 中的 RenderSection() 问题

c# 在不使用调度程序的情况下访问 Task 中的 ui 元素

c# - 用另一个实现替换 .NET 程序集

c# - 已进行选择时卡住列表框项目的选择