我是WPF的新手。我試圖構建一個具有函數的應用程序(稱爲初始化),用戶必須填寫大量數據並重復表單的某些部分。儘管我們可能會在一個窗口中使用可摺疊面板,而不是下一頁/上一頁,但我們正在重寫一個具有相當長嚮導的舊應用。還有一些部分重複例如用戶可以指定一些項目,如果他們說3他們需要填寫每個項目的配置信息,那麼這些控件需要重複三次。WPF數據綁定兒童控制
我使用MVVM在這裏用我這個例子:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
老巫師有大約4頁,所以我打算有一個包含4個個子用戶控件打破了一個用戶控件(初始化) xaml了一下。
到目前爲止,我有初始化(其視圖模型從工作區視圖模型繼承在上面的例子),它包含一個孩子這是工作:
<Expander ExpandDirection="Down" Header="ChildOne">
<view:ChildOne />
</Expander>
我將爲每個孩子和Intialisation單獨的ViewModels這帶來了我的問題。 我遇到的問題是,ChildOne包含了我想要綁定像這樣一個下拉:
<ComboBox x:Name="textMessageTypeCmb" ItemsSource="{Binding Path=TextMessageSelectionOptions, Mode=OneTime}"/>
TextMessageSelectionOptions是ChildOne的視圖模型的公共屬性。這不會導致錯誤,而是一個空的下拉列表 - 該屬性getter永遠不會被調用。如果我將該屬性獲取器代碼移入Initialisation的ViewModel,但它可以工作,但我試圖將代碼保存在可管理的塊中,因此我想將代碼放回到ChildOne的ViewModel中。它也可以,如果在我的主窗口創建ChildOne爲工作區,而不是初始化這樣
ChildOneViewModel ws = this.Workspaces.FirstOrDefault(vm => vm is ChildOneViewModel) as ChildOneViewModel;
誰能勸我是否採取正確的方法(通過將其劃分成幾個用戶控件)和我需要什麼在綁定中做這個工作?我並不十分了解這些特別的約束力。
這兩個工作,我選擇了前者,因爲會有幾個控件需要綁定到屬性childviewmodel。謝謝 - 我沒有足夠的聲望投票。 – Nix 2012-04-04 11:55:39