在样式中设置窗口图标

时间:2012-07-06 13:28:51

标签: wpf icons styles

我想在我的主窗口和我的应用程序中的任何对话框或消息框中使用相同的图标,所以我尝试在ResourceDictionary中设置它:

<Style TargetType="{x:Type Window}">
  <Setter Property="Icon" Value="pack://application:,,,/MyReferenceAssemblyName;component/Images/myIcon.gif"></Setter>
</Style>

但这不起作用。 我如何与不同的窗口共享相同的图标?

编辑:

我有一个简单的资源字典(Style.xaml),我在其中定义了一些全局设置。我在App.xaml中使用它,如下所示:

<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="Resources/ViewModelTemplates.xaml"/>
      <ResourceDictionary Source="Resources/Style.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources>

该文件包含一些定义,例如:按钮高度,文本框前景色等 这些设备没有问题,我的应用程序创建的所有面板和窗口都使用这些设置。这就是为什么我希望在那里定义图标,让它全部用于应用程序。

我不是在寻找设置.exe文件图标的方法。

编辑:

我还没有找到我想要做的解决方案,所以我最终在我的ResourceDictionary中创建了一个BitmapImage,并在每个Window-Class中将它用作DynamicResource。

<BitmapImage x:Key="ApplicationIcon" UriSource="pack://application:,,,/MyReferenceAssemblyName;component/Images/myIcon.gif"></BitmapImage>

<Window ...        
    Closing="Window_Closing"
    Title="{Binding Title, UpdateSourceTrigger=PropertyChanged}"
    IsEnabled="{Binding IsEnabled, FallbackValue=True, Mode=OneWay}" 
    WindowState="Maximized"
    Icon="{DynamicResource ApplicationIcon}">
    ...
</Window>

1 个答案:

答案 0 :(得分:1)

对于遇到此问题的其他人,因为我有相同的问题,请参阅类似的问题,该问题提供了更多解释为什么这不起作用。 How to set default WPF Window Style in app.xaml?

还有一些建议;一个是tabina的解决方案,并将样式分别应用于每个窗口。它包含了一种有趣的方法来推导Window类,但它取决于个人偏好,因为它们只是解决方法。