2010-08-22 70 views
1

我試圖做一個類屬性的雙向綁定。在C#中將一個(複雜)類屬性綁定到CF.NET#

public class MyClass{ 
public MyField AField1{get;set;}; 
public MyField AField2{get;set;}; 
} 

public class MyField{ 
public string Value {get; set} 
} 

MyClass _class = MyClass(); 
_dv.DataSource = _class; 

數據綁定文本對象顯示MyField的類的名稱,而不是價值屬性。我也試圖進入:

DataMember = "AField1.Value"; 

有什麼辦法結合(2路)AField1.Value一類MyClass的到視覺控制?

+0

你有什麼約束力?一個ASP.NET控件,一個WPF控件,其他的東西? – 2010-08-22 12:20:44

+0

cf.net win控件(Resco DetailView) – FrenkR 2010-08-22 13:26:22

回答

0

這是一種痛苦。在.NET中沒有內置的方法來實現這一點,所以我可以放心地說,在CF中更是如此。

您可以在MSDN博客上開始使用article,但它非常有限,因爲您只能獲得一層嵌套屬性綁定。

就個人而言,我最終編寫了一個自定義的BindingSource,它基於位於互聯網上某處的代碼。我不能給你我的重寫源代碼,因爲它是我的僱主的財產,但是這個是讓我開始的項目link

提供的代碼有一些缺點:他的一些命名空間是System.ComponentModel,而VS2010似乎不喜歡,所以我不得不重新命名它們。並且在設計時會遇到一些問題,可能會使用起來很麻煩(所以您也想要修復這些問題),比如在發生拼寫錯誤時丟失屬性列表等等......

但是,這是創建一個處理嵌套對象的好BindingSource的最佳鏡頭(IMHO),並且您將瞭解實現嵌套綁定需要做些什麼。

最後一個缺點(也許最大的可能,但我對CF沒有經驗)是該項目是爲常規.NET Framework編寫的,所以很可能您將不得不完全重寫它。

希望有幫助....

編輯。呃哦,我一直在嚴肅的挖掘,沒有注意到...對不起。

PS。另一個想法是簡單地爲每個嵌套對象創建一個綁定源,但如果對象層次結構複雜,則會變得混亂(IMO)。