如果我使用此代码:
<btn:Button ButtonImage="{Binding Path=BtnImage, FallbackValue=../Images/Search.png}"/>
如果未设置BtnImage,我的Button会有一个默认图像。当我尝试将其更改为:
<UserControl.Resources>
<ImageSource x:Key="DefaultImage">
../Images/Search.png
</ImageSource>
</UserControl.Resources>
...
<btn:Button ButtonImage="{Binding Path=BtnImage, FallbackValue={StaticResource DefaultImage}}"/>
我的默认图片未显示。我想了解为什么以及如何解决这个问题,因为我是这种StaticResource方法的粉丝。
编辑:
我用过的按钮是假的:
<UserControl x:Class="WPF_Controls.Controls.Button"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="Btn">
<Button DataContext="{Binding ElementName=Btn}"
Command="{Binding Path=ButtonCommand}">
<Image Source="{Binding Path=ButtonImage}" />
</Button>
</UserControl>
解决方案: 如果我使用:
<UserControl.Resources>
<system:String x:Key="DefaultImage">pack://application:,,,/DK_WPF_Controls;component/Images/Search.png</system:String>
</UserControl.Resources>
一切都按预期工作!
答案 0 :(得分:1)
如果Visual Studio项目中有一个“Images”文件夹,其中包含“Search.png”文件,并且文件的Build Action
设置为Resource
,则以下内容应该有效:
<UserControl.Resources>
<BitmapImage x:Key="DefaultImage" UriSource="/Images/Search.png"/>
</UserControl.Resources>
,其中
UriSource="/Images/Search.png"
是完整Resource File Pack URI的XAML快捷方式,即
UriSource="pack://application:,,,<assembly name>;component/Images/Search.png"
或者,您也可以使用从字符串到ImageSource
的隐式转换,如
<ImageSource x:Key="DefaultImage">/Images/Search.png</ImageSource>