将 TextBox 绑定到类的属性

Joh*_*cht 2 wpf

也许这是非常错误的。我有一个文本框,希望该文本框中的值与类的成员同步。我以为我使用了绑定,但我无法控制它。我在下面尝试过,但不起作用。我哪里想错了?

这是我的 XAML:

    <Window x:Class="tt_WPF.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:tt_WPF"
    Title="MainWindow" SizeToContent="WidthAndHeight">
    <StackPanel>
      <TextBox x:Name="tb" Width="200" Text="{Binding local:abc.Name}"></TextBox>
       <Button Click="Button_Click">Ok</Button>
    </StackPanel> </Window>
Run Code Online (Sandbox Code Playgroud)

这是背后的代码:

public class ABC
{
    public string Name { get; set; }
}
public partial class MainWindow : Window
{
    private ABC abc = new ABC();

    public MainWindow()
    {
        InitializeComponent();
    }
    private void Button_Click(object sender, RoutedEventArgs e)
    { }
}
Run Code Online (Sandbox Code Playgroud)

eva*_*anb 5

首先,实现INotifyPropertyChanged并引发 ABC.Name 上的属性更改事件。

您需要将 MainWindow.cs 中的 ABC 对象设置为数据上下文并将 Name 绑定到TextBox.Text。在隐藏代码中:

public ABC MyABC { get; set; }

public MainWindow()
{
   InitializeComponent();
   MyABC = new ABC();
   DataContext = MyABC;
}
Run Code Online (Sandbox Code Playgroud)

并在 XAML 中绑定:

<TextBox x:Name="tb" Width="200" Text="{Binding Name, UpdateSourceTrigger="PropertyChanged"}"/>
Run Code Online (Sandbox Code Playgroud)

  • 改变DataContext = this; 到 DataContext = MyABC; 为我工作 (2认同)