XAML 继承(非代码隐藏)

mau*_*yat 4 .net c# wpf inheritance xaml

XAML 中的继承是如何实现的?

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

XAML本身似乎没有一般的“继承” 。有关于继承等的问题UserControl,但不是一般继承

问题:

我有 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>
Run Code Online (Sandbox Code Playgroud)

那唯一的东西不同,File1.xamlFile2.xaml有:

  1. Button中的 s ToolBar(请参阅代码中的注释)
  2. 特性XamDataGrid(他们在每一种情况下做的),主要的事件。

我怎样才能做到这一点?我是否必须分别为两个孩子编写代码隐藏文件?

Rac*_*hel 5

您可以使用ResourceDictionary

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

<UserControl.Resources>
    <ResourceDictionary Source="BaseStylesAndTemplates.xaml" />
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)