我在WPF中有3个用户控件,它们具有相同的布局(一些按钮和一个列表视图)但后面的代码是不同的,因为列表视图列出了不同类的集合。
是否有可能以某种方式对三个用户控件使用相同的XAML?因为现在,如果我改变一个XAML的布局,我必须手动为其他两个做。
由于
答案 0 :(得分:3)
这是MVVM
的完美场景创建一个UserControl
或View
创建三个不同的后端类,它们将充当ViewModel
对于UserControl
的每个实例,使用不同的ViewModel
作为DataContext
答案 1 :(得分:1)
1)将常见的XAML解压缩到单独的XAML文件中,然后在目标控件中将其用作DataTemplate:
<!-- 1. CommonView.xaml would contains common XAML -->
<!-- 2. Below is XAML of the any of three control -->
<UserControl>
<!-- In three controls use shared XAML as data template -->
<UserControl.Resources>
<DataTemplate x:Key="sharedTemplate">
<views:CommonView />
</DataTemplate>
</UserControl.Resources>
<MyControl>
<ContentPresenter ContentTemplate="{StaticResource sharedTemplate}" />
</MyControl>
</UserControl>
2)将每个控件绑定到单独的ViewModel