ResourceDictionary元素还是UserControl?

时间:2010-01-12 17:55:09

标签: wpf xaml user-controls resourcedictionary

我有一些XAML来绘制徽标,我想在各种其他XAML文件中重复使用它(它没有UI,也不需要代码)。徽标XAML的顶级是Canvas项。

要在其他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 - 也许我对资源有错误的想法?

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

通常情况下,如果要为此创建资源字典,则需要创建样式。然后,您可以删除一个控件,并使用您的资源在您希望的任何其他xaml文件中设置它。

然而,UserControl可能是一个更容易的选择,因为它可以是一个简单,可重复使用的元素,你可以放在任何地方。