【问题标题】:How to customize Acrylic brush如何定制亚克力画笔
【发布时间】:2017-07-07 13:19:33
【问题描述】:

我想使用亚克力画笔绘制堆栈面板表面。

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

它对我有用,但是当我想更改 Tint 颜色和不透明度时出现问题。有如下代码可以修改:

<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>

感谢您的帮助。 附言您需要 Windows Insider SDK 和系统版本 16190 或更高版本

【问题讨论】:

  • 放入App.xaml

标签: xaml uwp acrylic-material


【解决方案1】:

您可以创建一个ResourceDictionary,例如名为“ThemeDictionary.xaml”,并将您的AcrylicBrush 代码放入其中。

然后在您的App.xaml 中,您可以像这样引用您的ResourceDictionary

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

【讨论】:

    【解决方案2】:

    方法一:

    Application.Resources中添加ResourceDictionary.ThemeDictionaries

    在 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>
    

    方法二:

    正如@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. 您在App.xaml 中的MergedDictionaries 合并了您的ResourceDictionary 文件

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

    更多信息: ResourceDictionary and XAML resource references, XAML for Windows 10 Controls - Styling

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 2019-08-29
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多