Как настроить Акриловую кисть

Я хочу покрасить поверхность панели стека акриловой кистью.

<StackPanel Background="{ThemeResource SystemControlAcrylicElementBrush}"></StackPanel>

Это работает для меня, но есть проблема, когда я хочу изменить цвет оттенка и непрозрачность. Существует следующий код для его изменения:

<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Default">
    <AcrylicBrush x:Key="MyAcrylicBrush"
        BackgroundSource="HostBackdrop"
        TintColor="#FFFF0000"
        TintOpacity="0.8"
        FallbackColor="#FF7F0000"/>
</ResourceDictionary>

Я не знаю, где я должен поместить это и переименовать кисть для этого?

 <StackPanel Background="{ThemeResource **MyAcrylicBrush**}"></StackPanel>

Спасибо за помощь. PS Вам нужен Windows Insider SDK и системная сборка 16190 или выше

2 ответа

Решение

Способ 1:

добавлять ResourceDictionary.ThemeDictionaries в Application.Resources

В App.xaml

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.ThemeDictionaries>
            <ResourceDictionary x:Key="Default">
                <AcrylicBrush x:Key="MyAcrylicBrush" BackgroundSource="HostBackdrop" TintColor="#FFFF0000" TintOpacity="0.8" FallbackColor="#FF7F0000"/>
            </ResourceDictionary>

            <ResourceDictionary x:Key="HighContrast">
                <SolidColorBrush x:Key="MyAcrylicBrush" Color="{ThemeResource SystemColorWindowColor}"/>
            </ResourceDictionary>

            <ResourceDictionary x:Key="Light">
                <AcrylicBrush x:Key="MyAcrylicBrush" BackgroundSource="HostBackdrop" TintColor="#FFFF0000" TintOpacity="0.8" FallbackColor="#FFFF7F7F"/>
            </ResourceDictionary>
        </ResourceDictionary.ThemeDictionaries>
    </ResourceDictionary>
</Application.Resources>

Способ 2:

Как ответила @jsmyth886

  1. Добавить отдельный ResourceDictionary файл и поместите ваш ResourceDictionary.ThemeDictionaries код

    <ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="Default">
            <AcrylicBrush x:Key="MyAcrylicBrush" BackgroundSource="HostBackdrop" TintColor="#FFFF0000" TintOpacity="0.8" FallbackColor="#FF7F0000"/>
        </ResourceDictionary>
    
        <ResourceDictionary x:Key="HighContrast">
            <SolidColorBrush x:Key="MyAcrylicBrush" Color="{ThemeResource SystemColorWindowColor}"/>
        </ResourceDictionary>
    
        <ResourceDictionary x:Key="Light">
            <AcrylicBrush x:Key="MyAcrylicBrush" BackgroundSource="HostBackdrop" TintColor="#FFFF0000" TintOpacity="0.8" FallbackColor="#FFFF7F7F"/>
        </ResourceDictionary>
    </ResourceDictionary.ThemeDictionaries>
    
  2. Вы MergedDictionaries в App.xaml Слить ваш ResourceDictionary файл

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary1.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
    

Дополнительные сведения: ссылки на ресурсы ResourceDictionary и XAML, элементы управления XAML для Windows 10 - стилизация

Вы можете создать ResourceDictionaryнапример, под названием "ThemeDictionary.xaml" и поместите код, который у вас есть для AcrylicBrush там.

Тогда в вашем App.xaml вы можете сослаться на ваш ResourceDictionary вот так:

<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="ThemesDictionary.xaml" />
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources>
Другие вопросы по тегам