问题描述
我正在关注 WinUI3 中自定义控件(模板化)的 Microsoft tutorial,并决定摆弄它们(我是 WinUI 的新手)。我一直在尝试构建 Image Card 控件,但似乎无法从应用文件夹加载我的图像。
来自 MainPage.xaml
的标记(只是控制):
<local:BasicCard ImgSrc="Assets/woah.jpg" Title="Title here" Content="Content Here"/>
控件的样式默认为 Themes/Generic.xaml
,相关标记如下:
<ImageBrush.ImageSource>
<BitmapImage UriSource="{Binding Path=ImgSrc,RelativeSource={RelativeSource TemplatedParent}}" />
</ImageBrush.ImageSource>
现在,如果我为 ImgSrc 属性使用超链接似乎可以正常工作,但是我无法使用本地图像文件(在 Assets 文件夹中)将其拉下来。此外,同样的事情在桌面应用程序中工作正常,但前提是我使用绝对路径,而在 UWP 应用程序中,什么都不起作用(除了 https 链接)。我已将 woah.jpg 文件放在所有文件夹中,并测试了 Themes/woah.jpg
和 woah.jpg
之类的模式,甚至是绝对路径,但没有任何效果。我究竟做错了什么?任何帮助将不胜感激,如果需要,请索取完整的标记片段。
最后,我不知道这是否重要,但我目前正在将该财产注册为 winrt::hstring
像这样:
Microsoft::UI::Xaml::DependencyProperty BasicCard::m_ImageSourceProperty =
Microsoft::UI::Xaml::DependencyProperty::Register(
L"ImgSrc",winrt::xaml_typename<winrt::hstring>(),winrt::xaml_typename<TitleBarPlease::BasicCard>(),NULL
);
解决方法
IInspectable 指出图像需要成为包的一部分是正确的,奇怪的是并非默认情况下包含 Assets 文件夹中的所有资源,右键单击图像,然后选择“包含在项目”解决了这个问题(VS 2019)。