WPF:简单的文本框数据绑定(bind)

标签 wpf data-binding textbox

我有这门课:

public partial class Window1 : Window
{
    public String Name2;

    public Window1()
    {
        InitializeComponent();
        Name2 = new String('a', 5);
        myGrid.DataContext = this;
    }

    // ...
}

我想在文本框中显示字符串Name2

<Grid Name="myGrid" Height="437.274">
  <TextBox Text="{Binding Path=Name2}"/>
</Grid>

但是字符串没有显示。另外,如果使用 TimerCallback 定期更新字符串 Name2,我是否需要执行任何操作来确保数据更改时更新文本框?

最佳答案

Name2 是一个字段。 WPF 仅绑定(bind)到属性。将其更改为:

public string Name2 { get; set; }

请注意,通过此最小实现,您的 TextBox 将不会响应对 Name2 的编程更改。因此,对于您的计时器更新场景,您需要实现 INotifyPropertyChanged:

partial class Window1 : Window, INotifyPropertyChanged
{
  public event PropertyChangedEventHandler PropertyChanged;

  protected void OnPropertyChanged(string propertyName)
  {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  }

  private string _name2;

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

您应该考虑将其移动到单独的数据对象而不是您的 Window 类上。

关于WPF:简单的文本框数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1725554/

相关文章:

wpf - 如何将多个绑定(bind)添加到 WPF 中的相同依赖属性?

silverlight - 禁用父级时如何为嵌套控件启用滚动?

data-binding - 从文本区域获取用户输入

c# - 在wpf中获取文本框名称

c# - 打开选定文件的默认应用程序(MSWord、Adobe 等)

c# - 如何在 WPF 中将 DatePicker 添加到 DataGridTextColumn

.net - Caliburn.Micro:XAML 中的不同 "Targets"以及如何将 View / View 模型放入其中

c# - 在 WPF 中运行时创建的字段的表单验证

GWT:如何获取文本框中文本的宽度?

wpf - 将枚举类型绑定(bind)到文本框