作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 WPF 4.0 应用程序,它在菜单命令等内容中使用了一些自定义的 16x16 图标。我想要(现在)两套图标,默认的 Vista/7 风格的和一些 XP 风格的。我想要的是让当前的操作系统确定要使用的图标。
现在,我已经在指向特定 PNG 资源的主题资源字典(即 Aero.NormalColor.xaml 等)中定义了 BitmapImage 资源。
<!-- Aero.NormalColor.xaml -->
<BitmapImage x:Key="IconSave" UriSource="/MyWPFApp;component/Resources/Icons16/Aero/disk.png"/>
<!-- Luna.NormalColor.xaml -->
<BitmapImage x:Key="IconSave" UriSource="/MyWPFApp;component/Resources/Icons16/Luna/disk.png"/>
<Image Source="{StaticResource IconSave}"/>
最佳答案
我发现您可以使用 ComponentResourceKey 使其工作。在您的主题资源字典中定义资源如下
<!-- themes\aero.normalcolor.xaml -->
<BitmapImage x:Key="{ComponentResourceKey ResourceId=IconSave, TypeInTargetAssembly={x:Type local:CustomControl}}" UriSource="/MyWPFApp;component/Resources/Icons16/Aero/disk.png"/>
<!-- themes\luna.normalcolor.xaml -->
<BitmapImage x:Key="{ComponentResourceKey ResourceId=IconSave, TypeInTargetAssembly={x:Type local:CustomControl}}" UriSource="/MyWPFApp;component/Resources/Icons16/Luna/disk.png"/>
local:CustomControl
可以是您的主窗口或程序集中的自定义控件。有趣的是,只要它是自定义的,它实际上并不重要,因此它确保您强制它加载这些资源。
[assembly:ThemeInfo(ResourceDictionaryLocation.SourceAssembly, ResourceDictionaryLocation.SourceAssembly )]
<Image Source="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type local:CustomControl}, ResourceId=IconSave}}"/>
public class ThemeResourceKey : ComponentResourceKey
{
public ThemeResourceKey(String resourceId)
{
ResourceId = resourceId;
var assembly = Assembly.GetExecutingAssembly();
var types = assembly.GetTypes().Where(t => typeof (UIElement).IsAssignableFrom(t));
var uiElementType = types.FirstOrDefault();
if(uiElementType == default(Type))
throw new ArgumentException("No custom UIElements defined within this XAML");
TypeInTargetAssembly = uiElementType;
}
}
<!-- themes\aero.normalcolor.xaml -->
<BitmapImage x:Key="{local:ThemeResourceKey IconSave}" UriSource="/MyWPFApp;component/Resources/Icons16/Aero/disk.png"/>
<Image Source="{DynamicResource {local:ThemeResourceKey IconSave}}"/>
关于wpf - 如何在每个系统主题的基础上定义图标资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180435/
我一直在从事一个开源项目。它使用安装在 jdk8 镜像上的构建生成的 debian (.deb) 软件包创建 docker 镜像。 但最近我开始犯错误,不幸的是我无法克服它。一旦通过 Dockerfi
我正在尝试使这些卡片可点击以重定向到另一个屏幕,但我无法弄清楚 let cards = this.state.items.map(item => ( Actions.dog
我是一名优秀的程序员,十分优秀!