Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计通过

managing-styles-resourcedictionary管理样式资源字典

Agent Skill

managing-styles-resourcedictionary 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

196

周安装

8

GitHub Stars

25

下载量

63
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:managing-styles-resourcedictionary(管理样式资源字典)
来源仓库:https://github.com/christian289/dotnet-with-claudecode
仓库路径:skills/managing-styles-resourcedictionary
安装命令:
npx skills add https://github.com/christian289/dotnet-with-claudecode --skill managing-styles-resourcedictionary
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/christian289/dotnet-with-claudecode --skill managing-styles-resourcedictionary

简介

用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中快速定位候选结果。

  • 适用于需要根据关键词或任务场景进行信息检索的场景,如样式资源查询。
  • 通过 npx skills add 命令从指定 GitHub 仓库安装,需确认权限范围和是否触发联网操作。
  • 建议结合原始 README 核验具体用法,注意检查维护状态和潜在的文件读写行为。
  • 安装前应评估是否需要执行外部命令或访问敏感数据,避免误改生产环境。

SKILL.md

WPF Style & ResourceDictionary Patterns

Effectively managing Style and ResourceDictionary for consistent UI and maintainability.

1. Style Basic Structure

1.1 Explicit Style (With Key)

<Window.Resources>
    <!-- Explicit style: must reference by key to apply -->
    <Style x:Key="PrimaryButtonStyle" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="#2196F3"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="Padding" Value="16,8"/>
        <Setter Property="FontWeight" Value="SemiBold"/>
    </Style>
</Window.Resources>

<Button Style="{StaticResource PrimaryButtonStyle}" Content="Primary"/>

1.2 Implicit Style (Without Key)

<Window.Resources>
    <!-- Implicit style: auto-applied to all controls of that type -->
    <Style TargetType="{x:Type Button}">
        <Setter Property="Margin" Value="5"/>
        <Setter Property="Cursor" Value="Hand"/>
    </Style>
</Window.Resources>

<!-- Style automatically applied -->
<Button Content="Auto Styled"/>

2. Style Inheritance (BasedOn)

2.1 Basic Inheritance

<!-- Base button style -->
<Style x:Key="BaseButtonStyle" TargetType="{x:Type Button}">
    <Setter Property="Padding" Value="12,6"/>
    <Setter Property="BorderThickness" Value="0"/>
    <Setter Property="Cursor" Value="Hand"/>
</Style>

<!-- Primary button: inherits base style -->
<Style x:Key="PrimaryButtonStyle" TargetType="{x:Type Button}"
       BasedOn="{StaticResource BaseButtonStyle}">
    <Setter Property="Background" Value="#2196F3"/>
    <Setter Property="Foreground" Value="White"/>
</Style>

<!-- Secondary button: inherits base style -->
<Style x:Key="SecondaryButtonStyle" TargetType="{x:Type Button}"
       BasedOn="{StaticResource BaseButtonStyle}">
    <Setter Property="Background" Value="#E0E0E0"/>
    <Setter Property="Foreground" Value="#424242"/>
</Style>

2.2 Implicit Style Inheritance

<!-- Explicit style inheriting from implicit style -->
<Style TargetType="{x:Type Button}">
    <Setter Property="Margin" Value="5"/>
</Style>

<Style x:Key="SpecialButtonStyle" TargetType="{x:Type Button}"
       BasedOn="{StaticResource {x:Type Button}}">
    <Setter Property="Background" Value="Gold"/>
</Style>

3. ResourceDictionary

3.1 File Structure

📁 Themes/
├── 📄 Colors.xaml          (Color definitions)
├── 📄 Brushes.xaml         (Brush definitions)
├── 📄 Converters.xaml      (Converter definitions)
├── 📄 Controls/
│   ├── 📄 Button.xaml      (Button styles)
│   ├── 📄 TextBox.xaml     (TextBox styles)
│   └── 📄 ListBox.xaml     (ListBox styles)
└── 📄 Generic.xaml         (Merged dictionary)

3.2 Colors.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <!-- Base color palette -->
    <Color x:Key="PrimaryColor">#2196F3</Color>
    <Color x:Key="PrimaryDarkColor">#1976D2</Color>
    <Color x:Key="PrimaryLightColor">#BBDEFB</Color>

    <Color x:Key="AccentColor">#FF4081</Color>

    <Color x:Key="TextPrimaryColor">#212121</Color>
    <Color x:Key="TextSecondaryColor">#757575</Color>

    <Color x:Key="BackgroundColor">#FAFAFA</Color>
    <Color x:Key="SurfaceColor">#FFFFFF</Color>

    <Color x:Key="ErrorColor">#F44336</Color>
    <Color x:Key="SuccessColor">#4CAF50</Color>
    <Color x:Key="WarningColor">#FFC107</Color>

</ResourceDictionary>

3.3 Brushes.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <!-- Merge Colors.xaml -->
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Colors.xaml"/>
    </ResourceDictionary.MergedDictionaries>

    <!-- SolidColorBrush definitions -->
    <SolidColorBrush x:Key="PrimaryBrush" Color="{StaticResource PrimaryColor}"/>
    <SolidColorBrush x:Key="PrimaryDarkBrush" Color="{StaticResource PrimaryDarkColor}"/>
    <SolidColorBrush x:Key="PrimaryLightBrush" Color="{StaticResource PrimaryLightColor}"/>

    <SolidColorBrush x:Key="AccentBrush" Color="{StaticResource AccentColor}"/>

    <SolidColorBrush x:Key="TextPrimaryBrush" Color="{StaticResource TextPrimaryColor}"/>
    <SolidColorBrush x:Key="TextSecondaryBrush" Color="{StaticResource TextSecondaryColor}"/>

    <SolidColorBrush x:Key="BackgroundBrush" Color="{StaticResource BackgroundColor}"/>
    <SolidColorBrush x:Key="SurfaceBrush" Color="{StaticResource SurfaceColor}"/>

</ResourceDictionary>

3.4 Generic.xaml (Merged Dictionary)

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <ResourceDictionary.MergedDictionaries>
        <!-- Order matters: merge in dependency order -->
        <ResourceDictionary Source="Colors.xaml"/>
        <ResourceDictionary Source="Brushes.xaml"/>
        <ResourceDictionary Source="Converters.xaml"/>
        <ResourceDictionary Source="Controls/Button.xaml"/>
        <ResourceDictionary Source="Controls/TextBox.xaml"/>
        <ResourceDictionary Source="Controls/ListBox.xaml"/>
    </ResourceDictionary.MergedDictionaries>

</ResourceDictionary>

3.5 Loading in App.xaml

<Application x:Class="MyApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Themes/Generic.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

4. StaticResource vs DynamicResource

4.1 Comparison

AspectStaticResourceDynamicResource
Evaluation timeOnce at XAML loadEvery time at runtime
PerformanceFastRelatively slower
Change reflectionNoAuto-reflected
Forward referenceNot availableAvailable
Use caseFixed resourcesTheme changes, dynamic resources

4.2 Usage Examples

<!-- StaticResource: immutable resources -->
<Button Background="{StaticResource PrimaryBrush}"/>

<!-- DynamicResource: when runtime changes needed -->
<Border Background="{DynamicResource ThemeBackgroundBrush}"/>

4.3 Theme Switching Implementation

namespace MyApp.Services;

using System;
using System.Windows;

public sealed class ThemeService
{
    private const string LightThemePath = "/Themes/LightTheme.xaml";
    private const string DarkThemePath = "/Themes/DarkTheme.xaml";

    /// <summary>
    /// Switch theme
    /// </summary>
    public void SwitchTheme(bool isDark)
    {
        var themePath = isDark ? DarkThemePath : LightThemePath;
        var themeUri = new Uri(themePath, UriKind.Relative);

        var app = Application.Current;
        var mergedDicts = app.Resources.MergedDictionaries;

        // Remove existing theme
        for (var i = mergedDicts.Count - 1; i >= 0; i--)
        {
            var dict = mergedDicts[i];
            if (dict.Source?.OriginalString.Contains("Theme") == true)
            {
                mergedDicts.RemoveAt(i);
            }
        }

        // Add new theme
        mergedDicts.Add(new ResourceDictionary { Source = themeUri });
    }
}

5. Accessing Resources from Code

5.1 Resource Lookup

namespace MyApp.Helpers;

using System.Windows;
using System.Windows.Media;

public static class ResourceHelper
{
    /// <summary>
    /// Find resource (FindResource - throws if not found)
    /// </summary>
    public static Brush GetBrush(string key)
    {
        return (Brush)Application.Current.FindResource(key);
    }

    /// <summary>
    /// Find resource (TryFindResource - returns null if not found)
    /// </summary>
    public static Brush? TryGetBrush(string key)
    {
        return Application.Current.TryFindResource(key) as Brush;
    }

    /// <summary>
    /// Find resource from element (searches upward)
    /// </summary>
    public static T? FindResource<T>(FrameworkElement element, string key) where T : class
    {
        return element.TryFindResource(key) as T;
    }
}

5.2 Setting Dynamic Resource

// Set DynamicResource from code
button.SetResourceReference(Button.BackgroundProperty, "PrimaryBrush");

// Set StaticResource from code (direct resource assignment)
button.Background = (Brush)FindResource("PrimaryBrush");

6. ComponentResourceKey (For External Libraries)

6.1 Definition

namespace MyLib.Controls;

using System.Windows;

public static class MyLibResources
{
    // Define component resource key
    public static readonly ComponentResourceKey PrimaryBrushKey =
        new(typeof(MyLibResources), "PrimaryBrush");

    public static readonly ComponentResourceKey ButtonStyleKey =
        new(typeof(MyLibResources), "ButtonStyle");
}

6.2 Usage

<!-- Generic.xaml (in Themes folder) -->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:MyLib.Controls">

    <SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:MyLibResources}, ResourceId=PrimaryBrush}"
                     Color="#2196F3"/>

</ResourceDictionary>
<!-- Consumer side -->
<Button Background="{StaticResource {x:Static local:MyLibResources.PrimaryBrushKey}}"/>

7. Resource Lookup Order

1. Element's own Resources
2. Parent element Resources (searching upward in Visual Tree)
3. Window/Page Resources
4. Application.Resources
5. Theme resources (Generic.xaml)
6. System resources (SystemColors, SystemFonts)

8. Checklist

  • Define colors as Color type, Brushes in separate file
  • Separate style files per control
  • Use StaticResource for fixed resources, DynamicResource for theme resources
  • Verify ResourceDictionary merge order (dependency order)
  • Inherit common styles with BasedOn
  • Expose library resources with ComponentResourceKey

9. References

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

33.45%
按下载量换算21

Claude

29.84%
按下载量换算19

Cursor

18.33%
按下载量换算12

Gemini CLI

10.02%
按下载量换算6

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills