gpt4 book ai didi

wpf - WPF 中的主题化用户控件

转载 作者:行者123 更新时间:2023-12-04 07:48:01 24 4
gpt4 key购买 nike

如何在 WPF 中创建具有基本默认样式但也可以在需要时轻松主题化的 UserControl?

您是否有一些很好的指南、博客条目或示例来解释这个特定主题?

先感谢您,
马可

最佳答案

在 WPF 中,主题只是一组 XAML 文件,每个文件包含一个 资源词典其中包含 款式 模板适用于应用程序中使用的控件的定义。主题文件可能如下所示:

<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 查找 嵌入资源名为 themes\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>

关于wpf - WPF 中的主题化用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/577325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com