【发布时间】:2021-05-09 20:54:14
【问题描述】:
我在 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 等模式,甚至是绝对路径,也没有任何效果。我究竟做错了什么?任何帮助将不胜感激,如果需要,请索取完整的标记 sn-ps。
最后,我不知道这是否重要,但我目前正在将该物业注册为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
);
【问题讨论】:
-
我相信你需要使用
ms-appx协议访问应用包中的资源,即ImgSrc="ms-appx:///Assets/woah.jpg"。您还必须确保相应的资源确实已添加到应用程序包中。 -
是的,我已经尝试过您建议的 URL,但该图像不是项目的一部分。谢谢回复。任何想法如何以这种方式提供传入的图像?就像用户上传了一张图片,它不会是包的一部分,对吧?希望我说得通
-
Uri类型支持多种协议。 URI schemes that are specific to a Windows Runtime app 描述了它们。对于动态添加的资源,您可以使用ms-appdata而不是ms-appx。 -
ms-appdata是我需要的,感谢您的回复,非常感谢您抽出时间帮助像我这样的菜鸟
标签: xaml uwp c++-winrt winui-3