窗口
Fluent 窗口 (AppWindow)

- 可通过
TitleBarContent定义窗口标题栏内的内容
xml
<wnd:AppWindow
x:Class="Test.Views.MainWindow"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="clr-namespace:AvaloniaFluentUI.Controls;assembly=AvaloniaFluentUI"
xmlns:vm="using:Test.ViewModels"
xmlns:wnd="clr-namespace:AvaloniaFluentUI.Controls.Windowing;assembly=AvaloniaFluentUI"
Title="Test"
d:DesignHeight="450"
d:DesignWidth="800"
x:DataType="vm:MainWindowViewModel"
Icon="/Assets/avalonia-logo.ico"
mc:Ignorable="d">
<wnd:AppWindow.TitleBarContent>
<Grid ColumnDefinitions="*, Auto">
<ui:SearchTextBox
Grid.Column="0"
Width="328"
Margin="0,10,0,0"
VerticalAlignment="Center"
Watermark="请输入搜索文本"/>
<ui:ToolButton
Grid.Column="1"
Width="46"
Height="40"
HorizontalAlignment="Right"
VerticalAlignment="Stretch"
Command="{Binding ToggleThemeCommand}"
IconData="M15 3v-2q0-0.406 0.297-0.703t0.703-0.297 0.703 0.297 0.297 0.703v2q0 0.406-0.297 0.703t-0.703 0.297-0.703-0.297-0.297-0.703zM8 7q0 0.406-0.297 0.703t-0.703 0.297-0.703-0.297l-2-2q-0.297-0.297-0.297-0.703t0.297-0.703 0.703-0.297 0.703 0.297l2 2q0.297 0.297 0.297 0.703zM27 4q0.406 0 0.703 0.297t0.297 0.703-0.297 0.703l-2 2q-0.297 0.297-0.703 0.297t-0.703-0.297-0.297-0.703 0.297-0.703l2-2q0.297-0.297 0.703-0.297zM24 16v0.156q0 1.625-0.648 3.055t-1.75 2.492-2.547 1.68-3.055 0.617q-1.656 0-3.117-0.625t-2.547-1.711-1.711-2.547-0.625-3.117 0.625-3.117 1.711-2.547 2.547-1.711 3.117-0.625 3.117 0.625 2.547 1.711 1.711 2.547 0.625 3.117zM16 22h0.125q1.219 0 2.289-0.484t1.867-1.313 1.258-1.914 0.461-2.289-0.461-2.289-1.258-1.914-1.867-1.313-2.289-0.484h-0.125v12zM3 15q0.406 0 0.703 0.297t0.297 0.703-0.297 0.703-0.703 0.297h-2q-0.406 0-0.703-0.297t-0.297-0.703 0.297-0.703 0.703-0.297h2zM31 15q0.406 0 0.703 0.297t0.297 0.703-0.297 0.703-0.703 0.297h-2q-0.406 0-0.703-0.297t-0.297-0.703 0.297-0.703 0.703-0.297h2zM7 24q0.406 0 0.703 0.297t0.297 0.703-0.297 0.703l-2 2q-0.297 0.297-0.703 0.297t-0.703-0.297-0.297-0.703 0.297-0.703l2-2q0.297-0.297 0.703-0.297zM28 27q0 0.406-0.297 0.703t-0.703 0.297-0.703-0.297l-2-2q-0.297-0.297-0.297-0.703t0.297-0.703 0.703-0.297 0.703 0.297l2 2q0.297 0.297 0.297 0.703zM17 29v2q0 0.406-0.297 0.703t-0.703 0.297-0.703-0.297-0.297-0.703v-2q0-0.406 0.297-0.703t0.703-0.297 0.703 0.297 0.297 0.703z"
Theme="{StaticResource TransparentToolButton}"/>
</Grid>
</wnd:AppWindow.TitleBarContent>
</wnd:AppWindow>- 如果设置了
TitleBarContent, 需设置TitleBarHitTestType为TitleBarHitTestType.Complex, 否则会出现无法点击标题栏内容的情况 - 通过
EnableWindowEffect(true)启用窗口效果
* 设置启动页面, 继承IApplicationSplashScreen实现成员方法
AppName应用名称AppIcon应用图标SplashScreenContent启动页面内容RunTasks启动页面任务MinimumShowTime启动页面最小显示时间
csharp
using AvaloniaFluentUI.Controls.Windowing;
namespace Test.Views;
public partial class MainWindow : AppWindow
{
public MainWindow()
{
InitializeComponent();
TitleBar.TitleBarHitTestType = TitleBarHitTestType.Complex;
EnableWindowEffect(true);
SplashScreen = new MainWindowSplashScreen();
}
}
class MainWindowSplashScreen : IApplicationSplashScreen
{
public string AppName => "Test";
public IImage AppIcon => null;
public object SplashScreenContent => null;
public Task RunTasks(CancellationToken cancellationToken)
{
return Task.Delay(1000);
}
public int MinimumShowTime => 1000;
}