2014-11-06 139 views
0

我有我想要綁定到一個表格屬性「regimeAlias」的元素一個TextBox與tbRegimes表中的列,我已經與實體框架映射:在我的ViewModelWPF:將TextBox文本綁定到WCF屬性的子元素?

<TextBox Text="{Binding NewRegime.regimeAlias, Mode=TwoWay}"/> 

公開的屬性:

private tbRegime _NewRegime; 
public tbRegime NewRegime 
{ 
    get { return _NewRegime; } 
    set 
    { 
     _NewRegime = value; 
     OnPropertyChanged("NewRegime"); 
    } 
} 

最後,這裏的WCF服務參考自動生成的代碼類:

public partial class tbRegime : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { 

//blah blah blah 

[System.Runtime.Serialization.DataMemberAttribute()] 
public string regimeAlias { 
    get { 
     return this.regimeAliasField; 
    } 
    set { 
     if ((object.ReferenceEquals(this.regimeAliasField, value) != true)) { 
      this.regimeAliasField = value; 
      this.RaisePropertyChanged("regimeAlias"); 
     } 
    } 
} 

釷電子二傳手永遠不會被擊中。這是因爲NewRegime對象中的每個元素都需要提升PropertyChanged,如果有的話,是否有一個簡單的解決方法,而不需要向我的代碼添加更多的DTO圖層?

+0

但是否爲regimeAlias的setter被打中? – Paparazzi 2014-11-06 14:08:07

回答

1

編輯3:從您的政權的郵政編碼。我必須說你的約束力應該起作用。但當然,如果你想調試你必須設置斷點在你regimeAlias設定裝置


<TextBox Text="{Binding NewRegime.regimeAlias, Mode=TwoWay}"/> 

這段代碼意味着,你在你的類tbRegime綁定到公共財產regimeAlias。 NewRegime的創建者永遠不會遇到,因爲你不會綁定它。

所以檢查你的tbRegime類屬性setter for regimeAlias。

編輯:TextBox的DataContext的當然是與公共財產NewRegime的對象,但如果你在你的綁定的最後一個屬性使用點符號就像我說的是你綁定到:)

編輯一個:你沒有太多的解決方法:)如果你讓像你這樣的綁定,你需要一個公共財產regimeAlias模型,它應該實現INotifyPropertyChanged。

如果你想包裝regimeAlias屬性,那麼你有問題,你必須提出OnPropertyChanged(「MyRegimeAlias」)在正確的點。

public string MyRegimeAlias 
{ 
    get { return _NewRegime.regimeAlias; } 
    set 
    { 
     _NewRegime.regimeAlias = value; 
     OnPropertyChanged("MyRegimeAlias"); 
    } 
} 

XAML

<TextBox Text="{Binding MyRegimeAlias, Mode=TwoWay}"/> 
+0

regimeAlias是一個私人領域? – blindmeis 2014-11-06 14:19:09

+0

我的錯誤是WCF服務引用代碼暴露了公共屬性。編輯這個問題... – Hardgraf 2014-11-06 14:32:32

+0

好的,謝謝,真的,我將不得不爲tbRegime的每個子成員公開一個獨立的屬性。至少這樣我可以設置tbRegime objject,然後將其傳遞到我的LINQ方法來堅持更改回分貝,而不是通過負載參數爲每個值:) – Hardgraf 2014-11-06 15:11:42