fix: fix drawer measure

This commit is contained in:
Dong Bin
2025-02-08 02:11:21 +08:00
parent 8dbdc95a9a
commit 4893e6efb4
4 changed files with 127 additions and 161 deletions

View File

@@ -1,16 +1,16 @@
<ResourceDictionary <ResourceDictionary
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:u="https://irihi.tech/ursa" xmlns:helpers="clr-namespace:Irihi.Avalonia.Shared.Helpers;assembly=Irihi.Avalonia.Shared"
xmlns:helpers="clr-namespace:Irihi.Avalonia.Shared.Helpers;assembly=Irihi.Avalonia.Shared"> xmlns:u="https://irihi.tech/ursa">
<ControlTheme x:Key="{x:Type u:OverlayDialogHost}" TargetType="u:OverlayDialogHost"> <ControlTheme x:Key="{x:Type u:OverlayDialogHost}" TargetType="u:OverlayDialogHost">
<Setter Property="OverlayMaskBrush" Value="{DynamicResource OverlayDialogMaskBrush}" /> <Setter Property="OverlayMaskBrush" Value="{DynamicResource OverlayDialogMaskBrush}" />
</ControlTheme> </ControlTheme>
<ControlTheme x:Key="{x:Type u:CustomDialogControl}" TargetType="u:CustomDialogControl"> <ControlTheme x:Key="{x:Type u:CustomDialogControl}" TargetType="u:CustomDialogControl">
<Setter Property="MinWidth" Value="{DynamicResource DialogMinWidth}"/> <Setter Property="MinWidth" Value="{DynamicResource DialogMinWidth}" />
<Setter Property="MinHeight" Value="{DynamicResource DialogMinHeight}"/> <Setter Property="MinHeight" Value="{DynamicResource DialogMinHeight}" />
<Setter Property="CornerRadius" Value="{DynamicResource DialogCornerRadius}" /> <Setter Property="CornerRadius" Value="{DynamicResource DialogCornerRadius}" />
<Setter Property="Transitions"> <Setter Property="Transitions">
<Transitions> <Transitions>
@@ -26,20 +26,22 @@
Padding="0" Padding="0"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
VerticalAlignment="{TemplateBinding VerticalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"
Background="{DynamicResource SemiColorBackground2}"
Classes="Shadow" Classes="Shadow"
ClipToBounds="False" ClipToBounds="False"
Background="{DynamicResource SemiColorBackground2}"
CornerRadius="{TemplateBinding CornerRadius}" CornerRadius="{TemplateBinding CornerRadius}"
Focusable="True" Focusable="True"
IsHitTestVisible="True" IsHitTestVisible="True"
Theme="{DynamicResource CardBorder}"> Theme="{DynamicResource CardBorder}">
<Border ClipToBounds="True" CornerRadius="{TemplateBinding CornerRadius}"> <Border ClipToBounds="True" CornerRadius="{TemplateBinding CornerRadius}">
<Grid RowDefinitions="Auto, *"> <Grid RowDefinitions="Auto, *">
<ContentPresenter <ScrollViewer
Name="PART_ContentPresenter"
Grid.Row="0" Grid.Row="0"
Grid.RowSpan="2" Grid.RowSpan="2"
Content="{TemplateBinding Content}" /> HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<ContentPresenter Name="PART_ContentPresenter" Content="{TemplateBinding Content}" />
</ScrollViewer>
<Grid Grid.Row="0" ColumnDefinitions="*, Auto"> <Grid Grid.Row="0" ColumnDefinitions="*, Auto">
<Panel <Panel
Name="{x:Static u:DialogControlBase.PART_TitleArea}" Name="{x:Static u:DialogControlBase.PART_TitleArea}"
@@ -56,7 +58,7 @@
</Grid> </Grid>
</Border> </Border>
</Border> </Border>
<u:DialogResizer IsVisible="{TemplateBinding CanResize}" Margin="{Binding #PART_Border.Margin}" /> <u:DialogResizer Margin="{Binding #PART_Border.Margin}" IsVisible="{TemplateBinding CanResize}" />
</Panel> </Panel>
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
@@ -75,9 +77,7 @@
<MenuFlyout> <MenuFlyout>
<MenuItem Command="{Binding $parent[u:DialogControlBase].Close}" Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}"> <MenuItem Command="{Binding $parent[u:DialogControlBase].Close}" Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource SemiIconClose}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource SemiIconClose}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
</MenuFlyout> </MenuFlyout>
@@ -91,9 +91,7 @@
CommandParameter="{x:Static u:DialogLayerChangeType.BringForward}" CommandParameter="{x:Static u:DialogLayerChangeType.BringForward}"
Header="{DynamicResource STRING_MENU_BRING_FORWARD}"> Header="{DynamicResource STRING_MENU_BRING_FORWARD}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource DialogArrangeBringForwardGlyph}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource DialogArrangeBringForwardGlyph}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
<MenuItem <MenuItem
@@ -101,9 +99,7 @@
CommandParameter="{x:Static u:DialogLayerChangeType.BringToFront}" CommandParameter="{x:Static u:DialogLayerChangeType.BringToFront}"
Header="{DynamicResource STRING_MENU_BRING_TO_FRONT}"> Header="{DynamicResource STRING_MENU_BRING_TO_FRONT}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource DialogArrangeBringToFrontGlyph}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource DialogArrangeBringToFrontGlyph}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
<MenuItem <MenuItem
@@ -111,9 +107,7 @@
CommandParameter="{x:Static u:DialogLayerChangeType.SendBackward}" CommandParameter="{x:Static u:DialogLayerChangeType.SendBackward}"
Header="{DynamicResource STRING_MENU_SEND_BACKWARD}"> Header="{DynamicResource STRING_MENU_SEND_BACKWARD}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource DialogArrangeSendBackwardGlyph}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource DialogArrangeSendBackwardGlyph}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
<MenuItem <MenuItem
@@ -121,16 +115,12 @@
CommandParameter="{x:Static u:DialogLayerChangeType.SendToBack}" CommandParameter="{x:Static u:DialogLayerChangeType.SendToBack}"
Header="{DynamicResource STRING_MENU_SEND_TO_BACK}"> Header="{DynamicResource STRING_MENU_SEND_TO_BACK}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource DialogArrangeSendToBackGlyph}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource DialogArrangeSendToBackGlyph}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
<MenuItem Command="{Binding $parent[u:DialogControlBase].Close}" Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}"> <MenuItem Command="{Binding $parent[u:DialogControlBase].Close}" Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource SemiIconClose}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource SemiIconClose}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
</MenuFlyout> </MenuFlyout>
@@ -139,8 +129,8 @@
</ControlTheme> </ControlTheme>
<ControlTheme x:Key="{x:Type u:DefaultDialogControl}" TargetType="u:DefaultDialogControl"> <ControlTheme x:Key="{x:Type u:DefaultDialogControl}" TargetType="u:DefaultDialogControl">
<Setter Property="MinWidth" Value="{DynamicResource DialogMinWidth}"/> <Setter Property="MinWidth" Value="{DynamicResource DialogMinWidth}" />
<Setter Property="MinHeight" Value="{DynamicResource DialogMinHeight}"/> <Setter Property="MinHeight" Value="{DynamicResource DialogMinHeight}" />
<Setter Property="CornerRadius" Value="{DynamicResource DialogCornerRadius}" /> <Setter Property="CornerRadius" Value="{DynamicResource DialogCornerRadius}" />
<Setter Property="Transitions"> <Setter Property="Transitions">
<Transitions> <Transitions>
@@ -155,9 +145,9 @@
Padding="0" Padding="0"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
VerticalAlignment="{TemplateBinding VerticalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"
Background="{DynamicResource SemiColorBackground2}"
BoxShadow="0 0 8 0 #1A000000" BoxShadow="0 0 8 0 #1A000000"
Classes="Shadow" Classes="Shadow"
Background="{DynamicResource SemiColorBackground2}"
ClipToBounds="False" ClipToBounds="False"
CornerRadius="{TemplateBinding CornerRadius}" CornerRadius="{TemplateBinding CornerRadius}"
Focusable="True" Focusable="True"
@@ -165,7 +155,10 @@
Theme="{DynamicResource CardBorder}"> Theme="{DynamicResource CardBorder}">
<Border ClipToBounds="True" CornerRadius="{TemplateBinding CornerRadius}"> <Border ClipToBounds="True" CornerRadius="{TemplateBinding CornerRadius}">
<Grid RowDefinitions="Auto, *, Auto"> <Grid RowDefinitions="Auto, *, Auto">
<ScrollViewer Grid.Row="1"> <ScrollViewer
Grid.Row="1"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<ContentPresenter <ContentPresenter
Name="PART_ContentPresenter" Name="PART_ContentPresenter"
Margin="24,8" Margin="24,8"
@@ -180,10 +173,10 @@
<PathIcon <PathIcon
Name="PART_Icon" Name="PART_Icon"
Grid.Column="0" Grid.Column="0"
Theme="{StaticResource InnerPathIcon}"
Classes="ExtraLarge"
Margin="24,24,8,0" Margin="24,24,8,0"
VerticalAlignment="Center" /> VerticalAlignment="Center"
Classes="ExtraLarge"
Theme="{StaticResource InnerPathIcon}" />
<TextBlock <TextBlock
Name="PART_Title" Name="PART_Title"
Grid.Column="1" Grid.Column="1"
@@ -208,24 +201,16 @@
Margin="24,0,24,24" Margin="24,0,24,24"
HorizontalAlignment="Right" HorizontalAlignment="Right"
ColumnDefinitions="Auto, Auto, Auto, Auto"> ColumnDefinitions="Auto, Auto, Auto, Auto">
<Button <Button Name="{x:Static u:DefaultDialogControl.PART_CancelButton}" Margin="8,0,0,0" />
Name="{x:Static u:DefaultDialogControl.PART_CancelButton}" <Button Name="{x:Static u:DefaultDialogControl.PART_NoButton}" Margin="8,0,0,0" />
Margin="8,0,0,0" /> <Button Name="{x:Static u:DefaultDialogControl.PART_YesButton}" Margin="8,0,0,0" />
<Button <Button Name="{x:Static u:DefaultDialogControl.PART_OKButton}" Margin="8,0,0,0" />
Name="{x:Static u:DefaultDialogControl.PART_NoButton}"
Margin="8,0,0,0"/>
<Button
Name="{x:Static u:DefaultDialogControl.PART_YesButton}"
Margin="8,0,0,0"/>
<Button
Name="{x:Static u:DefaultDialogControl.PART_OKButton}"
Margin="8,0,0,0"/>
</Grid> </Grid>
</Grid> </Grid>
</Border> </Border>
</Border> </Border>
<u:DialogResizer IsVisible="{TemplateBinding CanResize}" Margin="{Binding #PART_Border.Margin}"/> <u:DialogResizer Margin="{Binding #PART_Border.Margin}" IsVisible="{TemplateBinding CanResize}" />
</Panel> </Panel>
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
@@ -240,27 +225,27 @@
<Setter Property="Background" Value="{DynamicResource BorderCardBackground}" /> <Setter Property="Background" Value="{DynamicResource BorderCardBackground}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="Grid.Column" Value="0"/> <Setter Property="Grid.Column" Value="0" />
<Setter Property="helpers:ClassHelper.Classes" Value="Tertiary"/> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_CANCEL}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_CANCEL}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="Grid.Column" Value="1"></Setter> <Setter Property="Grid.Column" Value="1" />
<Setter Property="helpers:ClassHelper.Classes" Value="Danger"/> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_NO}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_NO}" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="Grid.Column" Value="2"></Setter> <Setter Property="Grid.Column" Value="2" />
<Setter Property="helpers:ClassHelper.Classes" Value="Primary"/> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_YES}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_YES}" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="Grid.Column" Value="3"></Setter> <Setter Property="Grid.Column" Value="3" />
<Setter Property="helpers:ClassHelper.Classes" Value="Primary"/> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_OK}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_OK}" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^[Mode=None]"> <Style Selector="^[Mode=None]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
@@ -385,9 +370,7 @@
<MenuFlyout> <MenuFlyout>
<MenuItem Command="{Binding $parent[u:DialogControlBase].Close}" Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}"> <MenuItem Command="{Binding $parent[u:DialogControlBase].Close}" Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource SemiIconClose}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource SemiIconClose}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
</MenuFlyout> </MenuFlyout>
@@ -401,9 +384,7 @@
CommandParameter="{x:Static u:DialogLayerChangeType.BringForward}" CommandParameter="{x:Static u:DialogLayerChangeType.BringForward}"
Header="{DynamicResource STRING_MENU_BRING_FORWARD}"> Header="{DynamicResource STRING_MENU_BRING_FORWARD}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource DialogArrangeBringForwardGlyph}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource DialogArrangeBringForwardGlyph}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
<MenuItem <MenuItem
@@ -411,9 +392,7 @@
CommandParameter="{x:Static u:DialogLayerChangeType.BringToFront}" CommandParameter="{x:Static u:DialogLayerChangeType.BringToFront}"
Header="{DynamicResource STRING_MENU_BRING_TO_FRONT}"> Header="{DynamicResource STRING_MENU_BRING_TO_FRONT}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource DialogArrangeBringToFrontGlyph}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource DialogArrangeBringToFrontGlyph}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
<MenuItem <MenuItem
@@ -421,9 +400,7 @@
CommandParameter="{x:Static u:DialogLayerChangeType.SendBackward}" CommandParameter="{x:Static u:DialogLayerChangeType.SendBackward}"
Header="{DynamicResource STRING_MENU_SEND_BACKWARD}"> Header="{DynamicResource STRING_MENU_SEND_BACKWARD}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource DialogArrangeSendBackwardGlyph}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource DialogArrangeSendBackwardGlyph}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
<MenuItem <MenuItem
@@ -431,9 +408,7 @@
CommandParameter="{x:Static u:DialogLayerChangeType.SendToBack}" CommandParameter="{x:Static u:DialogLayerChangeType.SendToBack}"
Header="{DynamicResource STRING_MENU_SEND_TO_BACK}"> Header="{DynamicResource STRING_MENU_SEND_TO_BACK}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource DialogArrangeSendToBackGlyph}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource DialogArrangeSendToBackGlyph}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
<MenuItem <MenuItem
@@ -441,9 +416,7 @@
CommandParameter="{x:Static u:DialogLayerChangeType.BringForward}" CommandParameter="{x:Static u:DialogLayerChangeType.BringForward}"
Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}"> Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon Data="{DynamicResource SemiIconClose}" Theme="{StaticResource InnerPathIcon}" />
Theme="{StaticResource InnerPathIcon}"
Data="{DynamicResource SemiIconClose}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
</MenuFlyout> </MenuFlyout>
@@ -464,8 +437,8 @@
<Setter Property="ExtendClientAreaTitleBarHeightHint" Value="1" /> <Setter Property="ExtendClientAreaTitleBarHeightHint" Value="1" />
<Setter Property="ExtendClientAreaToDecorationsHint" Value="True" /> <Setter Property="ExtendClientAreaToDecorationsHint" Value="True" />
<Setter Property="ExtendClientAreaChromeHints" Value="SystemChrome" /> <Setter Property="ExtendClientAreaChromeHints" Value="SystemChrome" />
<Setter Property="MinWidth" Value="{DynamicResource DialogMinWidth}"/> <Setter Property="MinWidth" Value="{DynamicResource DialogMinWidth}" />
<Setter Property="MinHeight" Value="{DynamicResource DialogMinHeight}"/> <Setter Property="MinHeight" Value="{DynamicResource DialogMinHeight}" />
<Setter Property="SystemDecorations"> <Setter Property="SystemDecorations">
<OnPlatform> <OnPlatform>
<OnPlatform.Windows> <OnPlatform.Windows>
@@ -514,7 +487,7 @@
Margin="0,24,24,0" Margin="0,24,24,0"
Theme="{DynamicResource CloseButton}" /> Theme="{DynamicResource CloseButton}" />
</Grid> </Grid>
</Grid> </Grid>
</VisualLayerManager> </VisualLayerManager>
<u:WindowResizer IsVisible="{TemplateBinding IsManagedResizerVisible}" /> <u:WindowResizer IsVisible="{TemplateBinding IsManagedResizerVisible}" />
@@ -536,8 +509,8 @@
<Setter Property="ExtendClientAreaTitleBarHeightHint" Value="1" /> <Setter Property="ExtendClientAreaTitleBarHeightHint" Value="1" />
<Setter Property="ExtendClientAreaToDecorationsHint" Value="True" /> <Setter Property="ExtendClientAreaToDecorationsHint" Value="True" />
<Setter Property="ExtendClientAreaChromeHints" Value="SystemChrome" /> <Setter Property="ExtendClientAreaChromeHints" Value="SystemChrome" />
<Setter Property="MinWidth" Value="{DynamicResource DialogMinWidth}"/> <Setter Property="MinWidth" Value="{DynamicResource DialogMinWidth}" />
<Setter Property="MinHeight" Value="{DynamicResource DialogMinHeight}"/> <Setter Property="MinHeight" Value="{DynamicResource DialogMinHeight}" />
<Setter Property="SystemDecorations"> <Setter Property="SystemDecorations">
<OnPlatform> <OnPlatform>
<OnPlatform.Windows> <OnPlatform.Windows>
@@ -576,10 +549,10 @@
<PathIcon <PathIcon
Name="PART_Icon" Name="PART_Icon"
Grid.Column="0" Grid.Column="0"
Theme="{StaticResource InnerPathIcon}"
Classes="ExtraLarge"
Margin="24,24,8,0" Margin="24,24,8,0"
VerticalAlignment="Center" /> VerticalAlignment="Center"
Classes="ExtraLarge"
Theme="{StaticResource InnerPathIcon}" />
<TextBlock <TextBlock
Name="PART_Title" Name="PART_Title"
Grid.Column="1" Grid.Column="1"
@@ -604,20 +577,12 @@
Margin="24,0,24,24" Margin="24,0,24,24"
HorizontalAlignment="Right" HorizontalAlignment="Right"
Orientation="Horizontal"> Orientation="Horizontal">
<Button <Button Name="{x:Static u:DefaultDialogControl.PART_CancelButton}" Margin="8,0,0,0" />
Name="{x:Static u:DefaultDialogControl.PART_CancelButton}" <Button Name="{x:Static u:DefaultDialogControl.PART_NoButton}" Margin="8,0,0,0" />
Margin="8,0,0,0" /> <Button Name="{x:Static u:DefaultDialogControl.PART_YesButton}" Margin="8,0,0,0" />
<Button <Button Name="{x:Static u:DefaultDialogControl.PART_OKButton}" Margin="8,0,0,0" />
Name="{x:Static u:DefaultDialogControl.PART_NoButton}"
Margin="8,0,0,0" />
<Button
Name="{x:Static u:DefaultDialogControl.PART_YesButton}"
Margin="8,0,0,0" />
<Button
Name="{x:Static u:DefaultDialogControl.PART_OKButton}"
Margin="8,0,0,0" />
</StackPanel> </StackPanel>
</Grid> </Grid>
</VisualLayerManager> </VisualLayerManager>
<u:WindowResizer IsVisible="{TemplateBinding IsManagedResizerVisible}" /> <u:WindowResizer IsVisible="{TemplateBinding IsManagedResizerVisible}" />
@@ -625,27 +590,27 @@
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="Grid.Column" Value="0"/> <Setter Property="Grid.Column" Value="0" />
<Setter Property="helpers:ClassHelper.Classes" Value="Tertiary"/> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_CANCEL}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_CANCEL}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="Grid.Column" Value="1"></Setter> <Setter Property="Grid.Column" Value="1" />
<Setter Property="helpers:ClassHelper.Classes" Value="Danger"/> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_NO}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_NO}" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="Grid.Column" Value="2"></Setter> <Setter Property="Grid.Column" Value="2" />
<Setter Property="helpers:ClassHelper.Classes" Value="Primary"/> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_YES}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_YES}" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="Grid.Column" Value="3"></Setter> <Setter Property="Grid.Column" Value="3" />
<Setter Property="helpers:ClassHelper.Classes" Value="Primary"/> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_OK}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_OK}" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^[Mode=None]"> <Style Selector="^[Mode=None]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">

View File

@@ -2,8 +2,8 @@
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:Ursa.Themes.Semi.Converters" xmlns:c="clr-namespace:Ursa.Themes.Semi.Converters"
xmlns:u="https://irihi.tech/ursa" xmlns:helpers="clr-namespace:Irihi.Avalonia.Shared.Helpers;assembly=Irihi.Avalonia.Shared"
xmlns:helpers="clr-namespace:Irihi.Avalonia.Shared.Helpers;assembly=Irihi.Avalonia.Shared"> xmlns:u="https://irihi.tech/ursa">
<ControlTheme x:Key="{x:Type u:CustomDrawerControl}" TargetType="u:CustomDrawerControl"> <ControlTheme x:Key="{x:Type u:CustomDrawerControl}" TargetType="u:CustomDrawerControl">
<Setter Property="VerticalAlignment" Value="Stretch" /> <Setter Property="VerticalAlignment" Value="Stretch" />
<Setter Property="HorizontalAlignment" Value="Stretch" /> <Setter Property="HorizontalAlignment" Value="Stretch" />
@@ -19,10 +19,10 @@
Name="PART_Root" Name="PART_Root"
Margin="{TemplateBinding Padding, Margin="{TemplateBinding Padding,
Converter={x:Static c:ThicknessTakeConverter.Left}}" Converter={x:Static c:ThicknessTakeConverter.Left}}"
Background="{DynamicResource SemiColorBackground2}"
Padding="0" Padding="0"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
Background="{DynamicResource SemiColorBackground2}"
BorderThickness="{TemplateBinding BorderThickness, BorderThickness="{TemplateBinding BorderThickness,
Converter={x:Static c:ThicknessTakeConverter.Left}}" Converter={x:Static c:ThicknessTakeConverter.Left}}"
Classes="Shadow" Classes="Shadow"
@@ -34,11 +34,13 @@
Theme="{DynamicResource CardBorder}"> Theme="{DynamicResource CardBorder}">
<Border ClipToBounds="True" CornerRadius="{Binding #PART_Root.CornerRadius}"> <Border ClipToBounds="True" CornerRadius="{Binding #PART_Root.CornerRadius}">
<Grid RowDefinitions="Auto, *"> <Grid RowDefinitions="Auto, *">
<ContentPresenter <ScrollViewer
Name="PART_ContentPresenter"
Grid.Row="0" Grid.Row="0"
Grid.RowSpan="2" Grid.RowSpan="2"
Content="{TemplateBinding Content}" /> HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<ContentPresenter Name="PART_ContentPresenter" Content="{TemplateBinding Content}" />
</ScrollViewer>
<Grid Grid.Row="0" ColumnDefinitions="*, Auto"> <Grid Grid.Row="0" ColumnDefinitions="*, Auto">
<Panel <Panel
Name="{x:Static u:DialogControlBase.PART_TitleArea}" Name="{x:Static u:DialogControlBase.PART_TitleArea}"
@@ -81,19 +83,19 @@
</Style> </Style>
<Style Selector="^[Position=Top] /template/ u|DialogResizer"> <Style Selector="^[Position=Top] /template/ u|DialogResizer">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Bottom}}" /> <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Bottom}}" />
<Setter Property="ResizeDirection" Value="Bottom"/> <Setter Property="ResizeDirection" Value="Bottom" />
</Style> </Style>
<Style Selector="^[Position=Bottom] /template/ u|DialogResizer"> <Style Selector="^[Position=Bottom] /template/ u|DialogResizer">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Top}}" /> <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Top}}" />
<Setter Property="ResizeDirection" Value="Top"/> <Setter Property="ResizeDirection" Value="Top" />
</Style> </Style>
<Style Selector="^[Position=Left] /template/ u|DialogResizer"> <Style Selector="^[Position=Left] /template/ u|DialogResizer">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Right}}" /> <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Right}}" />
<Setter Property="ResizeDirection" Value="Right"/> <Setter Property="ResizeDirection" Value="Right" />
</Style> </Style>
<Style Selector="^[Position=Right] /template/ u|DialogResizer"> <Style Selector="^[Position=Right] /template/ u|DialogResizer">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Left}}" /> <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Left}}" />
<Setter Property="ResizeDirection" Value="Left"/> <Setter Property="ResizeDirection" Value="Left" />
</Style> </Style>
</ControlTheme> </ControlTheme>
@@ -112,10 +114,10 @@
Name="PART_Root" Name="PART_Root"
Margin="{TemplateBinding Padding, Margin="{TemplateBinding Padding,
Converter={x:Static c:ThicknessTakeConverter.Left}}" Converter={x:Static c:ThicknessTakeConverter.Left}}"
Background="{DynamicResource SemiColorBackground2}"
Padding="0" Padding="0"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
Background="{DynamicResource SemiColorBackground2}"
BorderThickness="{TemplateBinding BorderThickness, BorderThickness="{TemplateBinding BorderThickness,
Converter={x:Static c:ThicknessTakeConverter.Left}}" Converter={x:Static c:ThicknessTakeConverter.Left}}"
Classes="Shadow" Classes="Shadow"
@@ -127,7 +129,10 @@
Theme="{DynamicResource CardBorder}"> Theme="{DynamicResource CardBorder}">
<Border ClipToBounds="True" CornerRadius="{Binding #PART_Root.CornerRadius}"> <Border ClipToBounds="True" CornerRadius="{Binding #PART_Root.CornerRadius}">
<Grid RowDefinitions="Auto, *, Auto"> <Grid RowDefinitions="Auto, *, Auto">
<ScrollViewer Grid.Row="1"> <ScrollViewer
Grid.Row="1"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<ContentPresenter <ContentPresenter
Name="PART_ContentPresenter" Name="PART_ContentPresenter"
Margin="24,8" Margin="24,8"
@@ -158,18 +163,10 @@
Margin="24,0,24,24" Margin="24,0,24,24"
HorizontalAlignment="Right" HorizontalAlignment="Right"
Orientation="Horizontal"> Orientation="Horizontal">
<Button <Button Name="{x:Static u:DefaultDialogControl.PART_CancelButton}" Margin="8,0,0,0" />
Name="{x:Static u:DefaultDialogControl.PART_CancelButton}" <Button Name="{x:Static u:DefaultDialogControl.PART_NoButton}" Margin="8,0,0,0" />
Margin="8,0,0,0" /> <Button Name="{x:Static u:DefaultDialogControl.PART_YesButton}" Margin="8,0,0,0" />
<Button <Button Name="{x:Static u:DefaultDialogControl.PART_OKButton}" Margin="8,0,0,0" />
Name="{x:Static u:DefaultDialogControl.PART_NoButton}"
Margin="8,0,0,0" />
<Button
Name="{x:Static u:DefaultDialogControl.PART_YesButton}"
Margin="8,0,0,0" />
<Button
Name="{x:Static u:DefaultDialogControl.PART_OKButton}"
Margin="8,0,0,0" />
</StackPanel> </StackPanel>
</Grid> </Grid>
</Border> </Border>
@@ -179,27 +176,27 @@
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="Grid.Column" Value="0"/> <Setter Property="Grid.Column" Value="0" />
<Setter Property="helpers:ClassHelper.Classes" Value="Tertiary"/> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_CANCEL}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_CANCEL}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="Grid.Column" Value="1"></Setter> <Setter Property="Grid.Column" Value="1" />
<Setter Property="helpers:ClassHelper.Classes" Value="Danger"/> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_NO}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_NO}" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="Grid.Column" Value="2"></Setter> <Setter Property="Grid.Column" Value="2" />
<Setter Property="helpers:ClassHelper.Classes" Value="Primary"/> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_YES}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_YES}" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="Grid.Column" Value="3"></Setter> <Setter Property="Grid.Column" Value="3" />
<Setter Property="helpers:ClassHelper.Classes" Value="Primary"/> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_OK}"/> <Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_OK}" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^[Position=Right] /template/ Border#PART_Root"> <Style Selector="^[Position=Right] /template/ Border#PART_Root">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Left}}" /> <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Left}}" />
@@ -223,19 +220,19 @@
</Style> </Style>
<Style Selector="^[Position=Top] /template/ u|DialogResizer"> <Style Selector="^[Position=Top] /template/ u|DialogResizer">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Bottom}}" /> <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Bottom}}" />
<Setter Property="ResizeDirection" Value="Bottom"/> <Setter Property="ResizeDirection" Value="Bottom" />
</Style> </Style>
<Style Selector="^[Position=Bottom] /template/ u|DialogResizer"> <Style Selector="^[Position=Bottom] /template/ u|DialogResizer">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Top}}" /> <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Top}}" />
<Setter Property="ResizeDirection" Value="Top"/> <Setter Property="ResizeDirection" Value="Top" />
</Style> </Style>
<Style Selector="^[Position=Left] /template/ u|DialogResizer"> <Style Selector="^[Position=Left] /template/ u|DialogResizer">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Right}}" /> <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Right}}" />
<Setter Property="ResizeDirection" Value="Right"/> <Setter Property="ResizeDirection" Value="Right" />
</Style> </Style>
<Style Selector="^[Position=Right] /template/ u|DialogResizer"> <Style Selector="^[Position=Right] /template/ u|DialogResizer">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Left}}" /> <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding, Converter={x:Static c:ThicknessTakeConverter.Left}}" />
<Setter Property="ResizeDirection" Value="Left"/> <Setter Property="ResizeDirection" Value="Left" />
</Style> </Style>
</ControlTheme> </ControlTheme>
</ResourceDictionary> </ResourceDictionary>

View File

@@ -26,6 +26,8 @@ public partial class OverlayDialogHost
_layers.Add(new DialogPair(mask, control)); _layers.Add(new DialogPair(mask, control));
ResetZIndices(); ResetZIndices();
control.MaxWidth = Math.Min(control.MaxWidth, this.Bounds.Width);
control.MaxHeight = Math.Min(control.MaxHeight, this.Bounds.Height);
if (mask is not null) this.Children.Add(mask); if (mask is not null) this.Children.Add(mask);
this.Children.Add(control); this.Children.Add(control);
control.Measure(this.Bounds.Size); control.Measure(this.Bounds.Size);
@@ -53,6 +55,8 @@ public partial class OverlayDialogHost
internal async void AddModalDrawer(DrawerControlBase control) internal async void AddModalDrawer(DrawerControlBase control)
{ {
PureRectangle mask = CreateOverlayMask(true, control.CanLightDismiss); PureRectangle mask = CreateOverlayMask(true, control.CanLightDismiss);
control.MaxWidth = Math.Min(control.MaxWidth, this.Bounds.Width);
control.MaxHeight = Math.Min(control.MaxHeight, this.Bounds.Height);
_layers.Add(new DialogPair(mask, control)); _layers.Add(new DialogPair(mask, control));
this.Children.Add(mask); this.Children.Add(mask);
this.Children.Add(control); this.Children.Add(control);

View File

@@ -57,10 +57,10 @@ public class DrawerMeasureTest
}; };
window.Show(); window.Show();
Dispatcher.UIThread.RunJobs(); Dispatcher.UIThread.RunJobs();
var d = window.GetVisualDescendants().ToList();
Drawer.ShowCustom(textBlock, "hello world", null, Drawer.ShowCustom(textBlock, "hello world", null,
new DrawerOptions { Position = position, TopLevelHashCode = window.GetHashCode() }); new DrawerOptions { Position = position, TopLevelHashCode = window.GetHashCode() });
await Task.Delay(TimeSpan.FromSeconds(0.1)); await Task.Delay(TimeSpan.FromSeconds(0.1));
var d = window.GetVisualDescendants().ToList();
var dialogControl = window.GetVisualDescendants().OfType<CustomDrawerControl>().SingleOrDefault(); var dialogControl = window.GetVisualDescendants().OfType<CustomDrawerControl>().SingleOrDefault();
Assert.NotNull(dialogControl); Assert.NotNull(dialogControl);
Assert.True(dialogControl.Bounds.Width <= window.Bounds.Width); Assert.True(dialogControl.Bounds.Width <= window.Bounds.Width);