Files
WCS/Cowain.TestProject/Views/MainView.axaml
2026-03-02 09:08:20 +08:00

145 lines
4.7 KiB
XML

<UserControl
x:Class="Cowain.TestProject.Views.MainView"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:am="using:Avalonia.Media"
xmlns:conv="using:Cowain.Base.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:extensions="using:Cowain.Base.Extensions"
xmlns:i="using:Avalonia.Xaml.Interactivity"
xmlns:i18n="clr-namespace:Ke.Bee.Localization.Extensions;assembly=Ke.Bee.Localization"
xmlns:ia="using:Avalonia.Xaml.Interactions.Core"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:menu="using:Cowain.Base.ViewModels"
xmlns:u="https://irihi.tech/ursa"
xmlns:view="using:Cowain.TestProject.Views"
xmlns:vm="using:Cowain.TestProject.ViewModels"
MinWidth="1024"
MinHeight="500"
d:DesignHeight="450"
d:DesignWidth="800"
x:CompileBindings="True"
x:DataType="vm:MainWindowViewModel"
mc:Ignorable="d">
<UserControl.Resources>
<conv:FirstLetterConverter x:Key="FirstLetterConverter" />
<conv:StringToBoolConverter x:Key="StringToBoolConverter" />
</UserControl.Resources>
<Grid Classes.Blur="{Binding $parent[u:UrsaWindow].(u:OverlayDialogHost.IsInModalStatus)}" ColumnDefinitions="Auto *">
<Border
Padding="0"
HorizontalAlignment="Left"
BorderThickness="0,0,1,0"
Theme="{DynamicResource CardBorder}">
<!-- 导航菜单 -->
<u:NavMenu
Name="menu"
Margin="0,10,0,0"
CommandBinding="{Binding MenuClickCommand}"
ExpandWidth="200"
HeaderBinding="{Binding Text}"
IconBinding="{Binding Icon}"
IsHorizontalCollapsed="{Binding #collapse.IsChecked, Mode=OneWay}"
ItemsSource="{Binding ToolbarMenus}"
SelectedItem="{Binding SelectedMenuItem}"
SubMenuBinding="{Binding Items}">
<u:NavMenu.IconTemplate>
<DataTemplate DataType="{x:Type am:StreamGeometry}">
<u:TwoTonePathIcon
Width="16"
Height="16"
ActiveForeground="{DynamicResource SemiBlue5}"
ActiveStrokeBrush="{DynamicResource SemiBlue5}"
Data="{Binding}"
Foreground="{DynamicResource SemiGrey5}"
IsActive="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=u:NavMenuItem}, Path=IsHighlighted, Mode=TwoWay}"
StrokeBrush="{DynamicResource SemiGrey5}" />
</DataTemplate>
</u:NavMenu.IconTemplate>
<u:NavMenu.Header>
<StackPanel
Margin="4,4,4,20"
HorizontalAlignment="Center"
Spacing="15">
<Image
Width="48"
Height="47"
u:NavMenu.CanToggle="True"
Source="/Assets/CowainLogo.ico" />
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Classes="H10"
IsVisible="{Binding !#menu.IsHorizontalCollapsed}"
Theme="{DynamicResource TitleTextBlock}">
<Run Text="{i18n:Localize AppName}" />
<Run Text=" V" />
<Run Text="{Binding AppVersion}" />
</TextBlock>
</StackPanel>
</u:NavMenu.Header>
<u:NavMenu.Footer>
<!-- 搜索框 -->
<StackPanel Margin="4" Orientation="Horizontal">
<PathIcon
Width="16"
Margin="12,8"
u:NavMenu.CanToggle="True"
Data="{StaticResource SemiIconSearchStroked}" />
<TextBox
x:Name="SerachTextBox"
Grid.Column="1"
Classes="clearButton"
IsVisible="{Binding !#menu.IsHorizontalCollapsed}"
Watermark="{i18n:Localize View.SearchInput.Placeholder}">
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="TextChanged" SourceObject="SerachTextBox">
<ia:InvokeCommandAction Command="{Binding SerachKeyUpCommand}" CommandParameter="{Binding #SerachTextBox.Text}" />
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
</TextBox>
</StackPanel>
</u:NavMenu.Footer>
</u:NavMenu>
</Border>
<Grid
Grid.Column="1"
Margin="12,36,12,12"
RowDefinitions="Auto * Auto">
<Border
Grid.Row="0"
Margin="4"
Padding="12,4"
Theme="{DynamicResource CardBorder}">
<Panel>
<StackPanel Orientation="Horizontal">
<ToggleSwitch Name="collapse" Theme="{DynamicResource SplitViewToggleSwitch}" />
<TextBlock VerticalAlignment="Center" Text="{Binding SelectedMenuItem.Text}" />
</StackPanel>
</Panel>
</Border>
<view:MainContextView Grid.Row="1" Margin="6,4" />
<u:Marquee Grid.Row="2"
Height="30" Margin="4,2"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Speed="60"
IsVisible="{Binding AlarmMsg, Converter={x:Static conv:StringVisibilityConverter.IsNotNullOrEmpty} }"
Background="{DynamicResource SemiBlue1}"
Foreground="{DynamicResource SemiRed4}"
Direction="Left"
Content="{Binding AlarmMsg}"
IsRunning="True">
</u:Marquee>
</Grid>
</Grid>
</UserControl>