资源文件夹中的图像,用于WPF中的自定义控件

时间:2017-03-14 09:08:24

标签: wpf wpf-controls

我试图用一个由RadioButtons数组实现的控件创建一个WPF窗口,每个RadioButton由一张图片表示。我使用了this example中提供的模板,因此模板看起来像这样:

<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="RadioButton">
            <Border BorderThickness="{TemplateBinding BorderThickness}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            Background="Transparent"
                            CornerRadius="20">                                    
                <Image Source="{Binding Path=Content, 
                                RelativeSource={RelativeSource TemplatedParent}}"/>
            </Border>
        </ControlTemplate>
    </Setter.Value>
</Setter>

现在的问题是,为了在控件上设置图片,我必须写出图片的整个路径,就像那样

<RadioButton Name="radioButtonNo" Checked="radioButton_Checked"
        Content="C:\Myfolder\MyProject\Resources\MyPic0.png" 
        Style="{StaticResource Flag}" Width="75"/>

当然,我希望能够写出像

这样的东西
<RadioButton Name="radioButtonNo" Checked="radioButton_Checked"
        Content="MyPic0.png" 
        Style="{StaticResource Flag}" Width="75"/>

但是当我这样做时,我得到的只是一个标准的RadioButton,文件名为标题。我做错了什么?

1 个答案:

答案 0 :(得分:1)

提供正确的相对路径就足够了,比如

vm.$data

请注意,WPF中的图像资源通常作为程序集资源文件进行管理。他们的构建操作设置为<RadioButton Content="Resources/MyPic0.png" .../> ,并由Resource File Pack URIs引用。 XAML解析器会自动添加缺少的Resource前缀。

您也可以显式创建分配给ControlTemplate中Image控件的Source属性的ImageSource实例:

pack://application:,,,/

或者使用明确编写的包URI:

<RadioButton ...>
    <RadioButton.Content>
        <BitmapImage UriSource="Resources/MyPic0.png"/>
    </RadioButton.Content>
</RadioButton>