假设我有一个标题按钮的主题文件Button.xaml。
通过合并在应用程序资源字典中,它可以隐式应用于应用程序项目设计器中。
但是在我将Button.xaml移动到组件项目之后,组件项目设计者无法隐式应用主题文件。
如何在组件项目中隐式使用该主题文件?
更新 Themes.xaml如下
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StyleLibrary;component/Themes/Shared.xaml" />
<ResourceDictionary Source="pack://application:,,,/StyleLibrary;component/Themes/Button.xaml" />
<ResourceDictionary Source="pack://application:,,,/StyleLibrary;component/Themes/ComboBox.xaml" />
...
<Application x:Class="ButtonStyleTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StyleLibrary;component/Themes.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
如果我使用合并的Theme.xaml,Button在设计器中看起来很正常,但在运行时失败了。 但是如果我一个接一个地合并Button.xaml,ComboBox,那么设计和运行时看起来都很正常。
答案 0 :(得分:0)
新例子。
假设您有一个名为StyleLibrary的库 在这个库中,你有一个名为Button.xaml的ResourceDictionary,它看起来像这样
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type Button}" >
<Setter Property="Width" Value="75" />
<Setter Property="Height" Value="23" />
</Style>
</ResourceDictionary>
在应用程序中,我们添加对StyleLibrary的引用,在App.xaml中我们添加它。
<Application x:Class="ButtonStyleTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StyleLibrary;component/Button.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
此样式将在运行时和设计器中应用于应用程序和库中。
左边是我的MainWindow。是有一个自己的Button,然后是一个来自TestLibrary的UserControl,它有两个Buttons。右边是一个来自TestLibrary的窗口,它包含一个来自TestLibrary的UserControl,所有按钮似乎都应用了样式。