2010-01-12 41 views
0

我有一些XAML來繪製徽標,我想在其他各種XAML文件中重新使用它(它沒有UI並且不需要代碼)。 Logo XAML的頂層是Canvas項目。ResourceDictionary元素或UserControl?

要在其他XAML文件中使用該徽標,最好將此徽標定義爲ResourceDictionary中的元素或創建UserControl

這似乎很容易與UserControl,但我想用XamlReader加載我的XAML文件,所以我寧願使用資源,以便這些可以在XAML中指定。似乎有可能將諸如Canvas之類的項目存儲在ResourceDictionary中,但我不確定如何引用它們。

例如,我可以定義我的標誌作爲ResourceDictionary元素如下:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Canvas x:Name="LayoutRoot" x:Key="Logo"> 
     <!-- My Logo --> 
    </Canvas> 
</ResourceDictionary> 

但如何我可以在其他XAML文件中使用此Logo - 也許我有關於資源錯誤的想法?

回答

1

我發現解決方案是一個VisualBrush。我可以在ResourceDictionary中定義如下:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<VisualBrush x:Key="Logo"> 
    <VisualBrush.Visual> 
<Canvas x:Name="LayoutRoot" x:Key="Logo"> 
       <!-- My Logo --> 
      </Canvas> 

然後在必要時使用此VisualBrush。

0

通常,如果您想爲此創建資源字典,那麼您將創建一個樣式。然後,您可以放棄一個控件,並將其與您的資源一起放入您希望的任何其他xaml文件中。

但是,UserControl可能是一個更容易的選項,因爲它可能是一個簡單的可重複使用的元素,可以放在任何地方。

+0

我不認爲風格是要走的路,我的標誌太複雜,不能轉換爲風格(即> 250行的XAML) – 2010-01-12 18:48:32

+0

這是爲風格找到的。如果你擔心,但是,你可以使用用戶控件。 – 2010-01-12 21:02:50

+0

在一個ResourceDictionary中添加處理程序,這個處理程序連接到應用程序的其餘部分也是稍微有些尷尬,而usercontrol是一切照舊的。 – Epirocks 2017-08-18 11:24:03

相關問題