2015-01-26 58 views
1

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

这是我的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> 

在这里,后面的代码:

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) 
    { } 
} 
+0

如果你不想使用MVVM工具集,考虑如何执行INotifyPropertyChanged http://stackoverflow.com/questions/291518/inotifypropertychanged-vs-dependencyproperty-in-viewmodel并没有标签出来,绑定属性可能不会更新没有解决http://stackoverflow.com/a/25864134/3225而且,它也是非常典型的设置DataContext的查看/窗口,其中包含要绑定的对象的实例 – kenny 2015-01-26 22:21:08

+2

开始阅读[数据绑定概述](https://msdn.microsoft.com/zh-cn/library/ms752347.a spx)MSDN上的文章。 – Clemens 2015-01-26 22:28:27

回答

2

一是落实INotifyPropertyChanged和提高对ABC.Name的属性更改事件。

您需要在MainWindow.cs中使用ABC对象,因此您需要将该对象设置为公共属性并将其绑定到TextBox.Text。您还需要在MyABC上引发ProperyChanged事件;你可以使用上面的链接来判断。在代码隐藏:在XAML

public ABC MyABC { get; set; } 

public MainWindow() 
{ 
    InitializeComponent(); 
    DataContext = this; 
    MyABC = new ABC(); 
} 

和绑定:

<TextBox x:Name="tb" Width="200" Text="{Binding Name, UpdateSourceTrigger="PropertyChanged"}"/> 
相关问题