2012-07-05 88 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