背景样式改进

背景图片现在可生效在每一个窗口上
This commit is contained in:
rmbgame
2021-08-22 15:33:02 +08:00
parent 61e944daf8
commit c49bd0593c
6 changed files with 71 additions and 37 deletions
+4 -3
View File
@@ -9,6 +9,7 @@
</Application.DataTemplates>
<Application.Resources>
<converters:IsNullConverter x:Key="IsNullConverter" />
<converters:IsVisibleToOpacity x:Key="IsVisibleToOpacity" />
<converters:NameToFontFamilyConverter x:Key="NameToFontFamilyConverter" />
<converters:DrawingKeyValueConverter x:Key="DrawingKeyValueConverter" />
<converters:BitmapAssetValueConverter x:Key="BitmapAssetValueConverter" />
@@ -24,9 +25,9 @@
<StyleInclude Source="avares://System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Styles/ThemeAccent.xaml" />
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml" />
<sty:FluentAvaloniaTheme ControlsVersion="2"
RequestedTheme="Dark"
DefaultToUserTheme="False"
<sty:FluentAvaloniaTheme ControlsVersion="2"
RequestedTheme="Dark"
DefaultToUserTheme="False"
UseSegoeUIOnWindows="False"/>
<!--<StyleInclude Source="avares://AvaloniaEdit/AvaloniaEdit.xaml"/>-->
<StyleInclude Source="avares://System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Styles/Controls.xaml" />
@@ -0,0 +1,37 @@
using Avalonia.Data;
using Avalonia.Data.Converters;
using Avalonia.Media;
using FluentAvalonia.UI.Media;
using System;
using System.Globalization;
namespace System.Application.Converters
{
public class IsVisibleToOpacity : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double defaultOpacity = 1;
if (parameter is double d)
{
defaultOpacity = d;
}
if (value is bool b)
{
return b ? defaultOpacity : 0;
}
return 1;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is double d)
{
return d > 0;
}
return BindingOperations.DoNothing;
}
}
}
@@ -4,17 +4,34 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ms="clr-namespace:System.Application.Models.Settings;assembly=System.Application.SteamTools.Client.Desktop"
mc:Ignorable="d"
x:Name="u" IsHitTestVisible="False"
x:Name="u"
IsHitTestVisible="False"
Background="Transparent"
x:Class="System.Application.UI.Views.Controls.TitleBar">
<Panel>
<DockPanel x:Name="Back" HorizontalAlignment="Stretch">
<Panel.Background>
<ImageBrush Source="{ReflectionBinding Source={x:Static ms:UISettings.BackgroundImagePath},Path=Value, Mode=OneWay,Converter={StaticResource BitmapAssetValueConverter}}"
Stretch="UniformToFill"
Opacity="{ReflectionBinding Source={x:Static ms:UISettings.EnableCustomBackgroundImage},Path=Value, Mode=OneWay,Converter={StaticResource IsVisibleToOpacity},ConverterParameter=0.8}"/>
</Panel.Background>
<!--<Image IsHitTestVisible="False"
IsVisible="{ReflectionBinding Source={x:Static ms:UISettings.EnableCustomBackgroundImage},Path=Value, Mode=OneWay}"
Source="{ReflectionBinding Source={x:Static ms:UISettings.BackgroundImagePath},Path=Value, Mode=OneWay,Converter={StaticResource BitmapAssetValueConverter}}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Stretch="UniformToFill"
Opacity="0.8">
</Image>-->
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder DockPanel.Dock="Top" IsHitTestVisible="False" Height="{StaticResource TitleBarHeight}">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder DockPanel.Dock="Bottom" IsHitTestVisible="False" Opacity="{StaticResource ContentOpacity}">
<ExperimentalAcrylicBorder DockPanel.Dock="Bottom"
x:Name="Back"
IsHitTestVisible="False">
<!--Opacity="{StaticResource ContentOpacity}"-->
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
@@ -26,7 +26,7 @@ namespace System.Application.UI.Views.Controls
title.HorizontalAlignment = HorizontalAlignment.Center;
}
var back = this.FindControl<DockPanel>("Back");
var back = this.FindControl<ExperimentalAcrylicBorder>("Back");
this.GetObservable(IsVisibleBackgroundProperty)
.Subscribe(x => back.IsVisible = x);
}
@@ -16,49 +16,28 @@
x:DataType="vm:MainWindowViewModel"
x:CompileBindings="True">
<Panel>
<Image IsHitTestVisible="False"
IsVisible="{ReflectionBinding Source={x:Static ms:UISettings.EnableCustomBackgroundImage},Path=Value, Mode=OneWay}"
Source="{ReflectionBinding Source={x:Static ms:UISettings.BackgroundImagePath},Path=Value, Mode=OneWay,Converter={StaticResource BitmapAssetValueConverter}}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Stretch="Fill"
Opacity="0.8">
</Image>
<!--Title-->
<controls:TitleBar IsVisibleBackground="False"/>
<!--Background-->
<Grid ZIndex="0"
IsHitTestVisible="False"
ColumnDefinitions="Auto,*"
RowDefinitions="30,*">
<ExperimentalAcrylicBorder IsHitTestVisible="False"
Grid.ColumnSpan="2">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}"
MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}"
TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
<DockPanel IsHitTestVisible="False" Margin="{StaticResource TitleBarAfterMargin}">
<ExperimentalAcrylicBorder x:Name="NavBarBackground"
Grid.Row="1"
IsHitTestVisible="False"
IsHitTestVisible="False"
DockPanel.Dock="Left"
Width="240">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder IsHitTestVisible="False"
Grid.Row="1"
Grid.Column="1">
<ExperimentalAcrylicBorder IsHitTestVisible="False" DockPanel.Dock="Right">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}"
MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}"
TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</Grid>
</DockPanel>
<!--Title-->
<controls:TitleBar IsVisibleBackground="False"/>
<!--<Grid ColumnDefinitions="240,*,Auto">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Height="110" VerticalAlignment="Top">
<Image Source="/Application/UI/Assets/Icon.ico" Height="64" Width="64" VerticalAlignment="Center" Margin="-8,0,0,0"/>
@@ -186,7 +165,7 @@
<!--Content-->
<ui:NavigationView x:Name="NavigationView"
Margin="0 30 0 0"
Margin="{StaticResource TitleBarAfterMargin}"
Background="Transparent"
PaneDisplayMode="Left"
AlwaysShowHeader="True"
@@ -13,7 +13,7 @@
WindowStartupLocation="CenterOwner"
SizeToContent="WidthAndHeight"
MinWidth="450" MinHeight="50"
MaxWidth="900"
MaxWidth="900" MaxHeight="600"
ShowInTaskbar="False"
Padding="0" Background="Transparent"
ExtendClientAreaTitleBarHeightHint="30"