【问题标题】:Setting WPF Window Background Image at App Start Up在应用程序启动时设置 WPF 窗口背景图像
【发布时间】:2015-02-26 23:05:19
【问题描述】:

我有一个根据环境状态显示不同背景图像的应用程序,该应用程序在用户登录时通过 Windows 注册表 (HKEY_CURRENT_USER) 启动。
用户登录后,应用程序启动但随后崩溃,抱怨图像的 Uri 无效。
值得注意的是,如果应用程序由用户手动启动(即双击)一切正常,并且相应的图像已成功加载。
图片配置为 Build Action = None,Copy to output directory= Copy if newer

我的主窗口中的这个标记:

<Window.Background>
    <ImageBrush x:Name="imgBackground" ></ImageBrush>
</Window.Background>

然后在codebehind中我要设置对应的图片:

imgBackground.ImageSource = 
     new BitmapImage(new Uri(@"Resources\Background.png",UriKind.RelativeOrAbsolute));

图像配置为 Build Action = None,Copy to output directory= Copy if newer

【问题讨论】:

  • 听起来像是在应用程序启动时设置的CD(当前目录)有问题。您如何在用户登录时启动应用程序?开始菜单中的快捷方式还是什么?如果它是一个快捷方式,您可以通过将“Start In:”属性设置为指向您的应用程序目录来解决问题。
  • @LeandroTaset,应用程序加载是在用户登录时通过用户注册表配置的,由于未知原因,在这种情况下应用程序无法解析文件的路径。值得注意的是,如果应用程序是由用户手动启动(即双击),一切正常。

标签: c# wpf


【解决方案1】:

最好将图像加载为嵌入资源。

将 Build Action 设置为 Resource(并且不要复制到输出目录),并通过 Resource Pack URI 加载它:

imgBackground.ImageSource = new BitmapImage(
    new Uri("pack://application:,,,/Resources/Background.png"));

【讨论】:

  • 不,在后面的代码中你必须编写一个完整的 Pack Uri。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多