1
A
回答
2
我認爲這取決於用戶控制。用戶控件可以只是一個視圖,在這種情況下,您可以編寫一個更大的控件或頁面,並將該用戶控件作爲整體的一部分。較大的控件或頁面將爲此視圖提供視圖和視圖模型部件。
或者您可以創建一個自包含的用戶控件,它具有所有mvvm並使用事件與它所屬的較大用戶控件進行交互。
我懷疑你會通過第二種方法獲得更好的重用和模塊化。
總之:這取決於。
3
我們只需調用嵌入用戶控件MainWindow的控件和用戶控件UserControl即可。由於您處於MVVM模式,因此您至少有一個視圖模型用於外部視圖 - 我通常使用名稱MainVm。 用戶控件有兩種選擇:它們可以共享相同的視圖模型,或者可以有一個子視圖模型,僅用於UserControl,即UserVm。
你的第一選擇,你什麼都不做。您可以定義UserControl(Visual Studio'添加新項目' - >用戶控件是一個非常好的開始)。然後,您只需將它嵌入主窗口。
<Window
x:Class="SO.MainWindow"
...
xmlns:src="clr-namespace:SO"
...
>
...
<src:UserControl />
...
</Window>
UserControl將從MainWindow繼承相同的DataContext,並像在MainWindow中那樣執行所有{Binding}。
如果你想有一個子視圖模型(UserVm) - 它通常是MainVm(比如userVm)的一個公共屬性。在這種情況下,當您引用它時,您將設置UserControl的DataContext。
<src:UserControl DataContext="{Binding Path=userVm}" />
另一個流行的範例是聲明DataTemplate而不是UserControl。如果你這樣做,你只需要把UserVm(或者初始化它在XAML,或通過結合):
<Window x:Class="MainWindow" ...>
<Window.Resources>
<DataTemplate x:Key="UserDt"> <!-- or user TargetType instead of x:Key -->
...
</DataTemplate>
</Window.Resources>
...
<!-- You can put in a ContentControl like here: -->
<ContentControl Content="{Binding Path=userVm}"
ContentTemplate="{StaticResource UserDt}" />
<!-- or, if you defined TargetType for the DT, you can simply instantiate
the sub VM here. I don't like this apporach but it exists. -->
<src:UserVm />
</Window>
相關問題
- 1. MVVM Usercontrols可以在代碼隱藏中定義屬性嗎?
- 2. 如何在VB6 usercontrols中實現高級自定義屬性?
- 3. WPF MVVM - 在UserControls上綁定到容器ViewModel的屬性
- 4. 如何在此模型中應用MVVM模式?
- 5. 如何自定義URL模式在WSO2AM
- 6. ASP.NET MVVM模式
- 7. 模式是MVVM中的反模式嗎?
- 8. 在MVVM-light和WPF中切換views/usercontrols的最佳方式是什麼?
- 9. MVVM模式中的TypeInitializeException
- 10. 如何使用MVVM創建自定義模板dropdownlist kendo?
- 11. 如何實現MVVM自定義控件?
- 12. WPF自定義控件設計模式。 MVVM?
- 13. PostgreSQL的Sequelize模式:如何在模型中準確定義模式?
- 14. 如何在MVVM中實現模型
- 15. Combobox Column在WPVM中與MVVM模式(Galasoft)
- 16. 在QtQuick中應用MVVM模式
- 17. MVVM模式書籍?
- 18. MVVM模式和startActivity
- 19. 如何在MVVM模式中使用WPF轉換器?
- 20. 如何在使用MVVM模式時繼承WPF中的視圖?
- 21. 如何在Silverlight的mvvm模式中執行事件
- 22. 如何在mvvm模式中通知容器類
- 23. 如何在MVVM模式中加載wpf usercontrol
- 24. 如何使用MVVM/ICommand模式在WPF中正確實現BackgroundWorker
- 25. 多層如何在MVVM模式中工作?
- 26. 如何在嵌套的usercontrols中模擬回傳?
- 27. 如何綁定MVVM模式上的工具欄按鈕?
- 28. 如何使用MVVM模式將數據綁定到ListBox.ItemSource
- 29. 如何設置模型在模型(MVVM)
- 30. 在MVVM MVVM設計模式中的缺點android
如果我從MVVM使用定義我的控制...我怎樣才能從我的使用控制?如何將我的屬性綁定到xaml代碼中的Control View模型? – 2012-03-03 08:56:29
您的控件的xaml將綁定到它的視圖模型。外部模型(較大控件的模型)的工作就是創建內部視圖模型並將其傳遞到內部視圖/控件的實例中。 – Rohith 2012-03-03 09:00:56
你能給我一個這樣的示例代碼嗎? – 2012-03-03 09:10:18