[英]reuse an usercontrol(View) with different ViewModels
我會直接談談我的問題。 :)
我使用Caliburn.Micro和mvvm。 16個用戶控件在我的MainView上。 所有看起來都與一些按鈕,標簽一樣......就像那樣:
<UserControl x:Class=" Projectxy.usercontrolexample01View"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Projectxy"
mc:Ignorable="d"
d:DesignHeight="200" d:DesignWidth="305">
<Grid>
<Button x:Name="button" Content="Button" Width="75"/>
<Label x:Name="label" Content="Label"/>
<ComboBox x:Name="comboBox"/>
</Grid>
</UserControl>
我在MainView中調用usercontrol,如:
<ContentControl Name=" usercontrolexample01Model" Grid.Column="2" Grid.Row="1"/>
<ContentControl Name=" usercontrolexample02Model" Grid.Column="2" Grid.Row="2"/>
(我沒有繪制Bootstrapper,因為我認為這不是我的問題......?)
我想要的是不要在我的項目中添加16倍相同的xaml代碼:
usercontrolexample01View.xaml
usercontrolexample01ViewModel.cs
usercontrolexample02View.xaml
usercontrolexample02ViewModel.cs
…
如果我想改變一些東西,很難改變16個xaml文件......
我希望在我的MainView和16個ViewModel中有16個視圖(每次我在MainView中重復使用它),但16個視圖的“后面”應該只是1個應該重用的xaml文件(usercontrolexampleView.xaml)。
usercontrolexampleView.xaml
usercontrolexample01ViewModel.cs
usercontrolexample02ViewModel.cs
usercontrolexample03ViewModel.cs
有沒有辦法重用1個Usercontrol(xaml文件)與Caliburn.Micro? 我沒有找到有關的一些物品... :((有一些與影片名稱相同,但他們有其他的重點是這樣的線程 )。Finaly我發現了一個問題,這更多的是我的方向....但怎么可能我用Caliburn管理它?也許某人有一個代碼剪斷了我的解釋?
我希望我的問題很明確。 我剛剛接觸stackoverflow,wpf和caliburn micro ...並且不熟悉英語...... :(
謝謝你的所有建議!
Caliburn.Micro
根據命名約定為視圖模型選擇視圖。 如果你有一個視圖模型類(它應該在<appfolder>/ViewModels/
子文件夾中的一個文件中,並命名為<name>ViewModel.cs
),它將在<appfodler>/Views/
尋找一個名為'View.xaml'的用戶控件的視圖<appfodler>/Views/
子文件夾,如果找到它,用它來顯示視圖模型。
在您的情況下,您可以在主視圖模型中包含特定視圖模型的任意數量的實例,然后將它們綁定到ContentControl
- 每個將使用相同的,一旦定義的視圖,因為它們是相同類型。
例如:假設您的視圖模型名為SubViewModel
,並且您已SubViewModel
創建了一個名為SubView.xaml
的視圖。 在主視圖模型中,定義任意數量的實例,
public SubViewModel sVM1 {get;set;}
public SubViewModel sVM2 {get;set;}
(或者甚至制作它們的List<SubviewModel>
),並在主視圖中,將它們放在你喜歡的地方,
...
<ContentControl Name="sVM1"/>
....
<ContentControl Name="sVM2"/>
然后他們將使用SubView.xaml
顯示。 (另請注意,此處還有另一種綁定協議:通過將ContentControl
命名為與SubViewModel
實例相同,它們將由caliburn.micro
自動綁定)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.