WPF 中自定义控件的 Resources 文件夹中的图像

Images from Resources folder for custom controls in WPF

我正在尝试制作一个 WPF window,其中包含一个由 RadioButtons 数组实现的控件,每个 RadioButtons 都由一张图片表示。我使用了 中提供的模板,因此模板如下所示:

<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,文件名作为标题。我做错了什么?

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

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

请注意,WPF 中的图像资源通常作为程序集资源文件进行管理。它们的构建操作设置为 Resource,它们被 Resource File Pack URIs 引用。 XAML 解析器自动添加缺少的 pack://application:,,,/ 前缀。


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

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

或使用明确写入的 Pack URI:

<RadioButton ...>
    <RadioButton.Content>
        <BitmapImage UriSource="pack://application:,,,/Resources/MyPic0.png"/>
    </RadioButton.Content>
</RadioButton>