【问题标题】:How do I display a XAML format image from a Assets folder?如何显示资产文件夹中的 XAML 格式图像?
【发布时间】:2023-04-11 11:52:01
【问题描述】:

我正在尝试显示 XAML 格式的图像。图片位于我的 Assets 文件夹中,并且 Build Action 设置为 content。

我想检索图像,但我尝试过的所有操作都失败了,包括 ContentControl、按钮和图像。它不显示图像,而是将图像的路径名称显示为文本。

  <ContentControl Content="Assets/Logos/ups.xaml" Width="100" Height="100"/>

【问题讨论】:

  • 你在什么平台上?
  • 我正在使用 UWP,稍后将移植到 Xamarin。

标签: c# xaml xamarin uwp-xaml


【解决方案1】:

我不确定你能做到这一点。 Xaml 必须作为组件/可视树加载。

查看XamlReader

也许您可以创建自己的自定义控件来读取Uri 源并处理内容。或者也许有人已经创建了这样的控制。

<MyCustomXamlControl Source="Assets/Logos/ups.xaml" Width="100" Height="100"/>

代码如下:

private async void OnSourceChanged(Uri source)
{
    var file = await StorageFile.GetFileFromApplicationUriAsync(source);

    string xaml;

    using (var stream = await file.OpenReadAsync())
    using (var reader = new StreamReader(stream.AsStream()))
    {
        xaml = reader.ReadToEnd();
    }

    this.Content = XamlReader.Load(xaml);
}

注意:我没有测试过上述内容。这只是我放在一起的一个快速示例,请不要判断质量:) 尝试摆弄以找出如何将文件加载到string 并将其提供给XamlReader

【讨论】:

  • 我对显示原生格式所需的努力感到惊讶。我希望您至少可以分配一个适配器来读取 XML,如下所示:
  • 你为什么感到惊讶?这是微软。
  • 您可以创建一个UserControl,而不是一个独立的 XAML 文件。当它被实例化时,它会做同样的事情。构造函数调用InitializeComponent(),它使用XamlReader加载XAML
  • 对语法感到好奇。我想这将是静态的。在 UWP 示例中,MS 可以使用 XAML 而不是 PNG 作为初始屏幕和徽标屏幕。它将展示如何使用单个图像以更少的空间创建多种尺寸。
  • XAML 允许您输入平面图像范围之外的各种元素。 TextBoxComboBox 等表单元素,当你提供带有用户输入的启动画面时,操作系统应该怎么做?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多