2015-04-28 60 views
0

我對數據綁定有點新鮮。我設法做到了單向數據綁定,但我在做雙向綁定時遇到了一些麻煩。用戶控件對象的雙向數據綁定

我製成1)與在它的一些的TextBlocks一個用戶控件, 2)一些串屬性的類, 3)使用此類以產生具有這些性質的對象一個ObservableCollection,4)一個列表視圖由的ObservableCollection和產生將用戶控件作爲項目的數據模板。

到類的屬性綁定在用戶控件的TextBlock中我寫了下面的代碼在XAML:

<TextBlock x:Name="MyTextBlock" Text="{Binding TextBlock_Property}" /> 

哪裏MyTextBlock是用戶控件內部的文本塊和TextBlock_Property是我創建的類的屬性之一。 我也試過Text="{Binding TextBlock_Property, Mode=TwoWay}"但我沒有看到任何區別。

注意:當我更改已創建對象的屬性時,文本塊也會發生變化,但是當我更改文本塊內容時,屬性不會更新。

更新:我做的類是

class MyClass 
{ 
    public string Title { get; set; } 
    public string TextBlock_Property { get; set; } 

    public MyClass(string title, string textBlock_Property) 
    { 
     Title = title; 
     TextBlock_Property = textBlock_Property; 
    } 
} 
+0

的[我的依賴屬性只能綁定一個方法(可能的複製http://stackoverflow.com/questions/24027319/my-dependency-property-is-only-binding-one-way?rq = 1) –

+0

W8我要去搜索這個Dependency屬性,因爲不知道它是什麼,沒有使用過類似的東西。 – user2975038

+0

我不認爲這是一個依賴屬性問題。看起來他只是綁定到一個物業。我們可以看到虛擬機或代碼背後有你的屬性?你在哪裏設置你的datacontext? –

回答

1

MyClass必須實現INotifyPropertyChanged和財產TextBlock_Property具有預示着OnPropertyChanged("TextBlock_Property")事件的綁定更新。

private string _TextBlock_Property; 

    public string TextBlock_Property 
    { 
     get { return _TextBlock_Property; } 
     set { _TextBlock_Property = value; OnPropertyChanged("TextBlock_Property"); } 
    } 

爲了通知的Xaml /綁定控件數據已經改變一個必須在保持性能的類實現INotifyPropertyChange,其實例是在DataContext的。以下是我用來實現接口INotifyPropertyChanged的代碼。

public class MyClass : INotifyPropertyChanged 
{ 
     /// <summary> 
     /// Event raised when a property changes. 
     /// </summary> 
     public event PropertyChangedEventHandler PropertyChanged; 

     /// <summary> 
     /// Raises the PropertyChanged event. 
     /// </summary> 
     /// <param name="propertyName">The name of the property that has changed.</param> 
     protected virtual void OnPropertyChanged(string propertyName) 
     { 
      PropertyChangedEventHandler handler = PropertyChanged; 
      if (handler != null) 
      { 
       handler(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 
} 

要查看其完整這個操作,看看我的博客文章Xaml: ViewModel Main Page Instantiation and Loading Strategy for Easier Binding.

+0

你可以解釋我的第二部分嗎? 如果我理解正確,第一部分是在開始寫這篇文章: MyClass類:INotifyPropertyChanged的 – user2975038

+0

我也收到此錯誤: 「Project_Name.MyClass」不實現接口成員「System.ComponentModel.INotifyPropertyChanged.PropertyChanged」 – user2975038

+0

OK修正了這個錯誤,但我仍然沒有發現它工作 – user2975038