我试图用一个由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,文件名为标题。我做错了什么?
答案 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>