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

时间:2011-09-11 03:19:55

标签: wpf xaml user-controls refactoring

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

  1. 图片资源(“imgDepartment”)
  2. FilterPanel控件(EmployeeFilterPanel)
  3. 尽管如此,仅仅因为这两个项目,我需要这个用户的三个单独版本,其中大部分都是重复的代码。

    我能这样做吗?怎么样?

    干杯,
    Berryl

        <DockPanel LastChildFill="True" >
        <uc:ListSubjectHeader DockPanel.Dock="Top" 
            Subject="{Binding PresentationSubject}" 
            AddNewItemCommand="{Binding AddCommand}" 
            ImageSource="{StaticResource imgDepartment}" 
                              />
        <local:EmployeeFilterPanel  DockPanel.Dock="Top" DataContext="{Binding MasterVm}"/>
    
        <Grid Margin="0, 5, 0, 0">
            <common:MasterListingWorkspacesControl />
        </Grid>
    
    </DockPanel>
    

    enter image description here

    更新

    通过设置样式并将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类型。

2 个答案:

答案 0 :(得分:0)

为什么不设置 ImageSource &amp; DataContext 通过代码隐藏?

答案 1 :(得分:0)

我讨厌回答自己的问题,但也许会帮助别人。我在视图模型中使用了DataTemplates,资源转换器和字符串键的组合。更多详细信息和一些代码here