Wpf 用户控制重构-我能做得更好吗?

Wpf 用户控制重构-我能做得更好吗?,wpf,xaml,user-controls,refactoring,Wpf,Xaml,User Controls,Refactoring,我想使用下面的用户控件进行三种不同的演示。由于传递的数据上下文中的对象具有公共接口,因此每个表示中唯一不同的两个方面是: 图像资源(“imgDepartment”) FilterPanel控件(EmployeeFilterPanel) 尽管如此,正是因为这两项,我需要这个用户的三个不同版本,其中大部分代码都是重复的 我可以这样做吗?怎么做 干杯, 贝里尔 使现代化 通过设置样式并将PresentationImageUri属性添加到我的ViewModel,解决了图像部分问题,如下所示: &l

我想使用下面的用户控件进行三种不同的演示。由于传递的数据上下文中的对象具有公共接口,因此每个表示中唯一不同的两个方面是:

  • 图像资源(“imgDepartment”)
  • FilterPanel控件(EmployeeFilterPanel)
  • 尽管如此,正是因为这两项,我需要这个用户的三个不同版本,其中大部分代码都是重复的

    我可以这样做吗?怎么做

    干杯,
    贝里尔

    
    

    使现代化 通过设置样式并将PresentationImageUri属性添加到我的ViewModel,解决了图像部分问题,如下所示:

    <Style x:Key="ListSubjectHeaderStyle" TargetType="{x:Type uc:ListSubjectHeader}">
        <Setter Property="DockPanel.Dock" Value="Top" />
        <Setter Property="Subject" Value="{Binding PresentationSubject}" />
        <Setter Property="AddNewItemCommand" Value="{Binding AddCommand}" />
        <Setter Property="ImageSource" Value="{Binding PresentationImageUri}" />
    </Style>
    
    
    

    仍然不知道如何处理这种FilterPanel类型。

    为什么不通过codebehind设置ImageSource&DataContext

    我讨厌回答我自己的问题,但也许这会帮助其他人。最后,我在视图模型中结合使用了数据模板、资源转换器和字符串键。更多细节和一些代码

    B

    <Style x:Key="ListSubjectHeaderStyle" TargetType="{x:Type uc:ListSubjectHeader}">
        <Setter Property="DockPanel.Dock" Value="Top" />
        <Setter Property="Subject" Value="{Binding PresentationSubject}" />
        <Setter Property="AddNewItemCommand" Value="{Binding AddCommand}" />
        <Setter Property="ImageSource" Value="{Binding PresentationImageUri}" />
    </Style>