2015-01-26 63 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"}"/> 
相關問題