【问题标题】:Why is my application icon not transparent?为什么我的应用程序图标不透明?
【发布时间】:2012-04-26 00:30:10
【问题描述】:

在 XAML 中,我试图将窗口/应用程序图标绑定到文件系统上的图标。

在 Window.xaml 中

Icon="{Binding ApplicationIcon}"

在 AppViewModel.cs 中

public ImageSource ApplicationIcon
{
  get
  {
    return new BitmapImage(new Uri(pathReadFromConfigFile));
  }
}

当我这样做时,图标会显示,但它不是透明的。但是,如果我在项目中设置图标(不使用绑定),则图标将添加到项目中,并且在我启动应用程序时它是透明的。为什么它在这两种情况下表现不同?

【问题讨论】:

  • 见谅,我并不是要转移原来的问题,但是这不是把MVVM推到了极致吗?除非您的图标会在运行时发生变化,否则决策需要在 VM 中完成并通过属性公开,以便 View 是被动的。否则,何必费心呢?
  • 我理解您的意思,但我们正在尝试设计一个可配置的应用程序。我们有几个非常相似的应用程序,但它们的图标不同。我们的目标是让一个可执行文件使用不同的配置文件。
  • 是的,有道理,我问的原因——我在做纯粹主义者和做完人之间有内在的斗争。所以我只是想知道其他人的动机是什么。感谢您的回复。
  • 应该是图片加载方式和ImageSource创建方式有问题。如果您将 ApplicationIcon 绑定到具有奇怪背景颜色的 Image.Source,您会看到透明度吗?向我们展示您的其余代码。
  • @Brannon,我添加了更多代码。我猜这与返回 BitmapImage 有关。但是,我还能如何创建图像?

标签: c# wpf binding icons application-icon


【解决方案1】:

想通了。这是导致问题的 BitMapImage 创建。现在改用 BitmapFrame。

public ImageSource ApplicationIcon
{
  get
  {
    return BitmapFrame.Create(new Uri(pathReadFromConfigFile));
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多