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>
我正在尝试制作一个 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>