【问题标题】:Why won't my TextBox databinding work?为什么我的 TextBox 数据绑定不起作用?
【发布时间】:2013-04-22 12:34:57
【问题描述】:

我试图让 TextBox 控件双向绑定到 INotifyPropertyChanged 对象(Person)中的字符串属性。加载表单时调用 Getter,但未将值输入到 TextBox。同样,TextBox 中的任何更改都不会调用 Person 对象上的 Setter。

XAML

<Window x:Class="WpfApplication1.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="MainWindow" Height="350" Width="525">
  <TextBox x:Name="txtPersonName" 
DataContext="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
</Window>

视图模型

public class Person : INotifyPropertyChanged
{
    private string _name= "default value";

    public string Name
    {
        get { return _name; }
        set
        {
            if (value != _name)
            {
                _name = value;
                OnPropertyChanged("Name");
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

代码隐藏

public partial class MainWindow : Window
{
    private Person viewModel = new Person();
    public MainWindow()
    {
        InitializeComponent();
        DataContext = viewModel;
    }
}

为什么在文本框中输入的文本没有传播回 Person 对象?

【问题讨论】:

    标签: .net wpf xaml data-binding


    【解决方案1】:

    在您的XAML 中,您需要设置TextBox 的Text 属性而不是其DataContext 属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 2021-07-24
      • 2011-01-16
      • 2021-04-09
      • 2017-06-24
      相关资源
      最近更新 更多