XAML 中的 CSS 等效项

2024-05-17

在 Web 开发中,样式表非常常用。 Swing 中有用于处理 GUI 的布局管理器。我关于 XAML 应用这些范例之一的假设是否正确?两个都?在这种情况下,哪一个是首选?

我已经检查过 Intellisense 但除了Style领域,我没有发现任何特别明显的东西,我也不清楚要谷歌搜索哪些关键字。建议?


您正在寻找的是 ResourceDictionary。这比仅仅将样式放入 App.Resources 元素要灵活得多,并且可以让您更好地控制样式的范围。

将样式放入 App.Resources 有许多缺点:

  • 它很快就会填满并变成一个庞大而臃肿的列表
  • 每种款式均在全球范围内发售。你可能不想要那样。

使用 ResourceDictionary 很大程度上解决了这个问题:

  • 样式可以保留在一个或多个程序集中,并可以在应用程序之间重复使用
  • 通过包含(或不包含)资源字典,您可以控制添加到页面的样式
  • 您可以按照对您来说合乎逻辑的方式对样式和模板进行分组和组织

资源字典与 CSS 文件的映射非常接近。基本上,您可以使用它们来存储各种内容:

  • Styles
  • 控制模板和数据模板
  • 刷子等

并且,与样式表一样,您可以将它们应用于整个控件类型或使用命名样式的控件

<UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Styles/DialogStyles.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Icons/Error.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Icons/Exit.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Icons/Warning.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
</UserControl.Resources>

定义资源字典:

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
                        xmlns:sys="clr-namespace:System;assembly=mscorlib"
                        xmlns:Infrastructure="clr-namespace:Hsbc.Ice.Shell.Infrastructure"
                        xmlns:Ui="clr-namespace:Hsbc.Ice.Shell.Infrastructure.Ui">

        <LinearGradientBrush x:Key="{x:Static Ui:Brushes.SelectedRowBackgroundBrushKey}" StartPoint="0.5,0" EndPoint="0.5,1" 
                                 po:Freeze="True">
            <GradientStop Color="#4D5F6E96" Offset="0"/>
            <GradientStop Color="#2191A0BE" Offset="0.2"/>
            <GradientStop Color="#2191A0BE" Offset="0.45"/>
            <GradientStop Color="#745F6E96" Offset="1"/>
        </LinearGradientBrush>
    </ResourceDictionary>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XAML 中的 CSS 等效项 的相关文章

随机推荐