在我的應用程序中,我有一個DataGrid
中的成員列表,並且當選擇一個成員時,會員資料將填充其詳細信息。會員資料由10+ TextBlocks
組成,每個文本值綁定到string
類型的個人DependencyProperty (DP)
。WPF MVVM TextBlock綁定到類中的字符串DependencyProperty
生成的成員列表是List<MEMBERINFO>
,而SelectedMember DP
是MEMBERINFO類型。
public partial class MEMBERINFO
{
public GD_MEMBERDETAILS MEMBERDETAILS { get; set; }
public List<GD_ADDRESSDETAILS> ADDRESSDETAILS { get; set; }
public List<GD_VESSELDETAILS> BOATDETAILS { get; set; }
public GD_MEMBERSHIPS MEMBERSHIP { get; set; }
public List<string> FAMILYMEMBERS { get; set; }
}
目前,當在DataGrid
選擇了構件,SelectedMember
值被分配給各個DependencyProperties
用於顯示在成員簡檔例如
MemberName = SelectedMember.MEMBERINFO.MEMBER_NAME;
雖然這個作品,我覺得應該是做一個更合適的方法,看到我已經有我需要SelectedMember
中的所有信息。因此,有沒有辦法讓一個容器內的所有TextBlocks都綁定到SelectedMember
並且將文本綁定到SelectedMember
內的屬性上呢?而不是讓10+字符串DependencyProperties
和從SelectedMember
分配它們的值。那麼就像你用DataGrid做的一樣?我知道ListView和ListBox也有ItemsSource,但我的成員配置文件不是一個列表,我只想要一個簡單的容器,它沒有DataGrids和ListViews/Box的功能。
注意:在另一個具有類似問題的應用程序中,我設法操作DataGrid以刪除其固有的DataGrid功能,並在一個單元中顯示多個文本塊,以便我可以使用它的ItemsSource。但是這是一件非常痛苦的事情,所以我覺得應該有一個更簡單的方法!
聽起來像是你應該使用一個DataTemplate來顯示您所選的成員。但是,您不應該在視圖模型中使用依賴項屬性。 –
虛擬機中的DP不是那種違反MVVM的大問題。它並不是真的必要,因爲INPC屬性是優越的(它們是線程安全的,因爲您可以從非ui線程更新它們並自動進行編組更改)。你應該抓住一份框架指南的副本,然後... – Will
我只在2個月的時間裏進行了編程,所以我現在正處在一個陡峭的學習曲線中!如果他們不應該在ViewModel中,他們應該在哪裏? – GDiff94