xaml如何将动态资源引用为属性而不是元素

时间:2009-03-09 19:16:24

标签: wpf silverlight xaml

我有一个我需要在我的应用程序中使用的图像。我想在资源字典中只定义一次图像,并让我的其他xaml文件就是那个定义。我能解决的一件事是如何引用定义为xaml元素的内容而不是xaml属性中的属性。

这是我的ResourceDictionary

# resourceDictionary.xaml

<LinearGradientBrush x:Key="MyGradient" StartPoint="0,0.5" EndPoint="1,0.5">
    <GradientStop Color="#A5000000" Offset="0"/>
    <GradientStop Color="#00000000" Offset="1"/>
</LinearGradientBrush>

<Image x:Key="MyImage" Source="MyGlyph.png" Width="20" Height="20" />

所以在我的xaml中,我知道如何将渐变引用为控件对象的属性

<TextBlock Text="Sample Text" Background="{DynamicResource MessageGradient}"/>

但我想弄清楚他如何引用Image是一个完整的控制对象。这个例子只是创建了一个按钮,在按钮中有“{DynamicResource MyImage}”而不是图像。

<!-- Want MyImage to be content of the button -->
<Button>
   {DynamicResource MyImage}
</Button>

有没有一种简单的方法可以做到这一点,或者我必须创建一个仅包含我的图像的控件模板,然后在我的xaml中有一个使用控件模板的图像标签?

3 个答案:

答案 0 :(得分:5)

由于您希望图像是按钮的内容,因此您应该能够将其绑定到Content属性:

<Button Content="{DynamicResource MyImage}" />

答案 1 :(得分:3)

<!-- Want MyImage to be content of the button --> 
<Button> 
   <DynamicResource  ResourceKey="MyImage"/>
</Button> 

答案 2 :(得分:0)

如果您尝试将图像作为任何控件的背景

  <Button  Content="My Button">
        <Button.Background>
            <ImageBrush   ImageSource="MyGlyph.png"/>
        </Button.Background>
    </Button>