2010-01-12 90 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

相关问题