最近开发一个产品,打算把每个功能模块单独写一个DLL,来实现复用。那么问题 来了,每个DLL 样式都是类似的,每个DLL里面都搞样式,不利于后期的调整。所以呢把样式单独的放到一个DLL中。
实现大致如下:
1、新建自定义控件库 StyleLibrary 放样式Styles.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Button" x:Key="CustomButtonStyle">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="Foreground" Value="DarkGreen"/>
</Style>
<Style TargetType="UserControl" x:Key="FormStyle1" >
<Setter Property="Background" Value="Red" />
</Style>
</ResourceDictionary>
2、新建用户控件库 ControlLibrary 放窗体MyControl.xaml ,这里就相当于 系统的一个模块了
<!-- MyControl.xaml -->
<UserControl x:Class="ControlLibrary.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ControlLibrary" Height="200" Width="300">
<UserControl.Resources>
<!--在上面设置 没有效果-->
<!--Background="Red"-->
<!-- Style="{StaticResource FormStyle1}"-->
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StyleLibrary;component/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<!--控件内部设置没有问题-->
<Button Width="100" Style="{StaticResource CustomButtonStyle}" Content="Click Me"/>
</Grid>
</UserControl>
3、新建wpf应用MainApp ,MainWindow修改如下
<!-- MainWindow.xaml -->
<Window x:Class="MainApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ControlLibrary;assembly=ControlLibrary"
Title="MainWindow" Height="300" Width="500">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StyleLibrary;component/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<!--这里设置是有效果的-->
<local:MyControl Style="{StaticResource FormStyle1}"/>
</Grid>
</Window>
以上 我们发现对控件内部的样式 是可以控制的,外部是无法控制的,需要在主程序中设置,注意避坑。
标签:xmlns,http,样式,xaml,外部,2006,wpf,com,schemas From: https://www.cnblogs.com/530263009QQ/p/18393375