XAML继承(不是代码隐藏)

时间:2012-07-05 14:35:17

标签: c# .net wpf xaml inheritance

如何在 XAML 中完成继承

是否只能继承代码隐藏而不是 .xaml related question)?在子控件的命名空间中包含父项是唯一的方法吗?

XAML 中似乎没有一般的“继承”。关于继承UserControl等有questions但不是一般继承。{/ p>

问题:

我有2个xaml文件,File1.xamlFile2.xaml,它们非常相似。我可以创建SuperFile.xaml并将大部分以下代码放入其中吗?

<UserControl ... >
    <Grid>
        <Grid.RowDefinitions ... />

        <DockPanel ... >
            <ToolBar ... >
                <!-- Some Buttons here:
                     File1.xaml to contain the Buttons "View" and "Export"
                     File2.xaml to contain the Buttons "Edit" and "Delete"
                 -->
            </ToolBar>
        </DockPanel>

        <igDP:XamDataGrid MouseDoubleClick="xamDataGrid1_MouseDoubleClick" ... />
    </Grid>
</UserControl>

File1.xamlFile2.xaml中唯一不同的内容是:

  1. Button位于ToolBar(请参阅代码中的评论)
  2. XamDataGrid属性,主要是事件(他们在每种情况下都做了什么)。
  3. 我怎样才能做到这一点?我是否必须为两个孩子编写代码隐藏文件单独

1 个答案:

答案 0 :(得分:4)

您可以使用ResourceDictionary

将所有通用模板和样式放在ResourceDictionary中,然后同时UserControls导入ResourceDictionary

<UserControl.Resources>
    <ResourceDictionary Source="BaseStylesAndTemplates.xaml" />
</UserControl.Resources>