相同的XAML但用户控件背后的代码不同

时间:2012-02-21 20:11:09

标签: c# wpf

我在WPF中有3个用户控件,它们具有相同的布局(一些按钮和一个列表视图)但后面的代码是不同的,因为列表视图列出了不同类的集合。

是否有可能以某种方式对三个用户控件使用相同的XAML?因为现在,如果我改变一个XAML的布局,我必须手动为其他两个做。

由于

2 个答案:

答案 0 :(得分:3)

这是MVVM

的完美场景

创建一个UserControlView

创建三个不同的后端类,它们将充当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