先编写两个简单的Button样式。
Style1.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="BtnStyle" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Blue"/>
</Style>
</ResourceDictionary>
Style2.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="BtnStyle" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Yellow"/>
</Style>
</ResourceDictionary>
前台代码(先调用Style1的样式):
<Window x:Class="WpfResource.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/WpfResource;Component/Style1.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Button Style="{DynamicResource BtnStyle}" Height="81" HorizontalAlignment="Left" Margin="113,66,0,0" Name="button1" VerticalAlignment="Top" Width="183" />
<Button Content="Style2" Height="23" HorizontalAlignment="Left" Margin="221,164,0,0" Name="button2" VerticalAlignment="Top" Width="75" Click="button2_Click" />
<Button Content="Style1" Height="23" HorizontalAlignment="Left" Margin="113,164,0,0" Name="button3" VerticalAlignment="Top" Width="75" Click="button3_Click" />
</Grid>
</Window>
private void button2_Click(object sender, RoutedEventArgs e)
{
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri(@"/WpfResource;Component/Style2.xaml", UriKind.RelativeOrAbsolute);
this.Resources.MergedDictionaries.Add(rd);
}
private void button3_Click(object sender, RoutedEventArgs e)
{
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri(@"WpfResource;Component/Style1.xaml", UriKind.Relative);
this.Resources.MergedDictionaries.Add(rd);
}
源代码下载