2012-07-05 92 views
3

如何继承XAML实现的呢?XAML继承(没有代码隐藏)

这是真的,只是隐藏代码是可以继承的,而不是的.xamlrelated question)?是否包含父控件的子控件的命名空间这样做的唯一方法是?

似乎在XAML本身没有一般的“继承”。有questions关于继承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> 

的唯一事情File1.xamlFile2.xaml不同是:在ToolBar

  1. Button S(参见在代码注释)
  2. 性质XamDataGrid,主要是事件(他们在每种情况下做了什么)。

我该如何做到这一点?我是否需要为子女分别编写代码隐藏文件

+0

你真正需要继承,或简单地重复使用同一个类并有一个标志,表明你在哪个模式? – 2012-07-05 15:52:37

+0

@JoelLucsy如果只是两个文件的“事件”不同,我可以这么做。如果我使用相同的_xaml_,我将如何能够拥有不同的'Button'?即使在_xaml_中也可以使用**标志**吗? – mauryat 2012-07-05 16:11:37

+0

当然,将按钮的可见性属性绑定到按钮。您必须使用转换器才能从bool更改为Visibility枚举,但有很多这方面的例子。 – 2012-07-05 18:13:19

回答

4

您可以使用ResourceDictionary

把你所有的通用模板和样式在ResourceDictionary,然后同时拥有您的UserControls进口是ResourceDictionary

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

谢谢!通过遵循这种方法,我能够在两个子项_XAMLs_中嵌入不同的'Button'集合吗?例如,'File1.xaml'应该在'ToolBar'和'File2.xaml'中具有'Button's''''''''''''''''''''应该'''编辑'和'删除'。请参阅问题中的编辑。 – mauryat 2012-07-05 19:23:38

+1

@ maelstrom3我不明白你为什么不能。您的基本样式将全部从'ResourceDictionary'中取出,而您的各个组件(如按钮)将在您的单独'UserControls'中定义。 – Rachel 2012-07-05 19:39:37

+0

我在_WPF_中没有经验,因此尚未使用_Styles_。所以,我会听取您的意见:)并尝试一下。 – mauryat 2012-07-05 19:42:59