我开始使用WPF(.net 3.5 sp1,仅限VS,尚未混合)开发桌面应用程序。XAML:如何定义要用于多个项目的数据模板和样式
我在这一点上,我有几个库中的一些通用的可重用组件。
在哪里可以定义我的样式&数据模板,以便它们可以在多个项目中重复使用,这样我可以拥有一致的外观和感觉?
我已经看了ResourceDictionaries,但我不确定那
- 他们是什么,我需要
- 如果他们是我需要什么,我怎么能 “进口”他们到其他项目和 在Xaml中引用它们的内容。
感谢,
我开始使用WPF(.net 3.5 sp1,仅限VS,尚未混合)开发桌面应用程序。XAML:如何定义要用于多个项目的数据模板和样式
我在这一点上,我有几个库中的一些通用的可重用组件。
在哪里可以定义我的样式&数据模板,以便它们可以在多个项目中重复使用,这样我可以拥有一致的外观和感觉?
我已经看了ResourceDictionaries,但我不确定那
感谢,
ResourceDictionary是要走的路,您可以在项目之间复制包含资源字典的xaml文件,或者将它们编译为您将从项目中引用的DLL。
要引用同一项目中的字典,请在App.xaml中添加这样的内容(在这种情况下,我将资源保留在ControlStyles文件夹中)。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ControlStyles/Colors.xaml"/>
<ResourceDictionary Source="ControlStyles/Window.xaml"/>
<ResourceDictionary Source="ControlStyles/Button.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
如果它们编译成不同的dll,你可以使用这个语法(如果样式DLL被称为StyleAssembly,单词“组件”,实际上是语法的一部分,而不是一个目录名):
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Colors.xaml"/>
<ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Window.xaml"/>
<ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Button.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
你想合并的资源字典,描述here。
@Nir是正确的,我喜欢做的事,以及唯一与此速记更换
<ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Colors.xaml"/>
<ResourceDictionary Source="/StyleAssembly;component/ControlStyles/Colors.xaml"/>
它只是看起来更清洁,运行时将前缀pack:// application:,,,当它试图找到资源。
Yer only a Star,thanks :) – 2009-06-10 21:09:36