如何在 WPF 中创建具有基本默认样式但在需要时也可以轻松设置主题的 UserControl?
您是否有一些很好的指南、博客条目或示例来解释这个特定主题?
提前谢谢你,马可
如何在 WPF 中创建具有基本默认样式但在需要时也可以轻松设置主题的 UserControl?
您是否有一些很好的指南、博客条目或示例来解释这个特定主题?
提前谢谢你,马可
在 WPF 中,主题只是一组 XAML 文件,每个文件都包含一个ResourceDictionary,其中包含适用于应用程序中使用的控件的样式和模板定义。主题文件可能如下所示:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:uc="clr-namespace:MyApp.UserControls">
<!-- Standard look for MyUserControl -->
<Style x:Key="Standard" TargetType="{x:Type uc:MyUserControl}">
<Setter Property="Width" Value="22" />
<Setter Property="Height" Value="10" />
</Style>
</ResourceDictionary>
必须通过向程序集添加以下属性来显式启用对 WPF 应用程序中的主题的支持:
[assembly: ThemeInfo(
ResourceDictionary.None,
ResourceDictionaryLocation.SourceAssembly
)]
这将指示 WPF 查找名为theme\generic.xaml的嵌入式资源文件,以确定应用程序控件的默认外观。
请注意,当特定于主题的字典包含与应用程序程序集不同的文件时,样式和模板资源必须使用复合键,它告诉 WPF 哪个程序集包含样式/模板适用的控件。所以前面的例子应该修改为:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:uc="clr-namespace:MyApp.UserControls;assembly=MyApp">
<!-- Standard look for MyUserControl in the MyApp assembly -->
<Style x:Key="{ComponentResourceKey {x:Type uc:MyUserControl}, Standard}">
<Setter Property="Width" Value="22" />
<Setter Property="Height" Value="10" />
</Style>
</ResourceDictionary>
看这篇文章:http: //msdn.microsoft.com/en-us/magazine/cc135986.aspx
它讨论了如何编写可以使用 ControlTemplate 更改的控件,例如内置控件。