fix: fix ContextFlyout invalid issue & Simplify Button groups in MessageBox.

This commit is contained in:
Zhang Dian
2025-01-09 23:00:14 +08:00
parent d801736209
commit 5a038552e5
2 changed files with 43 additions and 30 deletions

View File

@@ -3,10 +3,35 @@
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">
<!-- Add Resources Here -->
<Design.PreviewWith>
<StackPanel Margin="20">
<u:MessageBoxControl
Content="此修改将不可逆"
MessageIcon="None"
Buttons="OK" />
<u:MessageBoxControl
Content="此修改将不可逆"
MessageIcon="Warning"
Buttons="OKCancel" />
<u:MessageBoxControl
Title="确定是否要保存此修改?"
MessageIcon="Warning"
Buttons="OKCancel" />
<u:MessageBoxControl
Title="确定是否要保存此修改?"
Content="此修改将不可逆"
MessageIcon="Warning"
Buttons="OKCancel" />
<u:MessageBoxControl
Title="确定是否要保存此修改?"
Content="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
MessageIcon="Warning"
Buttons="OKCancel" />
</StackPanel>
</Design.PreviewWith>
<ControlTheme x:Key="{x:Type u:MessageBoxWindow}" TargetType="u:MessageBoxWindow">
<Setter Property="Title" Value="{x:Null}" />
<Setter Property="Background" Value="{DynamicResource SemiColorBackground2}" />
<Setter Property="Background" Value="{DynamicResource SemiColorBackground3}" />
<Setter Property="TransparencyBackgroundFallback" Value="{DynamicResource WindowDefaultBackground}" />
<Setter Property="Foreground" Value="{DynamicResource WindowDefaultForeground}" />
<Setter Property="FontSize" Value="{DynamicResource DefaultFontSize}" />
@@ -80,6 +105,7 @@
Name="PART_ContentPresenter"
VerticalAlignment="Center"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
TextAlignment="Left"
TextWrapping="Wrap" />
</ScrollViewer>
@@ -87,20 +113,13 @@
<StackPanel
Grid.Row="2"
Margin="24,0,24,24"
Spacing="8"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Name="{x:Static u:MessageBoxWindow.PART_CancelButton}"
Margin="8,0,0,0" />
<Button
Name="{x:Static u:MessageBoxWindow.PART_NoButton}"
Margin="8,0,0,0" />
<Button
Name="{x:Static u:MessageBoxWindow.PART_YesButton}"
Margin="8,0,0,0" />
<Button
Name="{x:Static u:MessageBoxWindow.PART_OKButton}"
Margin="8,0,0,0" />
<Button Name="{x:Static u:MessageBoxControl.PART_CancelButton}" />
<Button Name="{x:Static u:MessageBoxControl.PART_NoButton}" />
<Button Name="{x:Static u:MessageBoxControl.PART_YesButton}" />
<Button Name="{x:Static u:MessageBoxControl.PART_OKButton}" />
</StackPanel>
</Grid>
</VisualLayerManager>
@@ -166,7 +185,7 @@
</ControlTheme>
<ControlTheme x:Key="{x:Type u:MessageBoxControl}" TargetType="u:MessageBoxControl">
<Setter Property="CornerRadius" Value="12" />
<Setter Property="CornerRadius" Value="6" />
<Setter Property="Padding" Value="48 24" />
<Setter Property="u:DialogControlBase.CanDragMove" Value="True" />
<Setter Property="Template">
@@ -178,7 +197,7 @@
VerticalAlignment="Center"
Classes="Shadow"
ClipToBounds="False"
Background="{DynamicResource SemiColorBackground2}"
Background="{DynamicResource SemiColorBackground3}"
CornerRadius="{TemplateBinding CornerRadius}"
IsHitTestVisible="True"
Theme="{DynamicResource CardBorder}">
@@ -227,6 +246,7 @@
Name="PART_ContentPresenter"
VerticalAlignment="Center"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
TextAlignment="Left"
TextWrapping="Wrap" />
</ScrollViewer>
@@ -234,20 +254,13 @@
<StackPanel
Grid.Row="2"
Margin="24,0,24,24"
Spacing="8"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Name="{x:Static u:MessageBoxControl.PART_CancelButton}"
Margin="8,0,0,0" />
<Button
Name="{x:Static u:MessageBoxControl.PART_NoButton}"
Margin="8,0,0,0" />
<Button
Name="{x:Static u:MessageBoxControl.PART_YesButton}"
Margin="8,0,0,0" />
<Button
Name="{x:Static u:MessageBoxControl.PART_OKButton}"
Margin="8,0,0,0" />
<Button Name="{x:Static u:MessageBoxControl.PART_CancelButton}" />
<Button Name="{x:Static u:MessageBoxControl.PART_NoButton}" />
<Button Name="{x:Static u:MessageBoxControl.PART_YesButton}" />
<Button Name="{x:Static u:MessageBoxControl.PART_OKButton}" />
</StackPanel>
</Grid>
</Border>
@@ -257,7 +270,7 @@
<Style Selector="^ /template/ Panel#PART_TitleArea">
<Setter Property="ContextFlyout">
<MenuFlyout>
<MenuItem Command="{Binding $parent[u:CustomDialogControl].Close}" Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}">
<MenuItem Command="{Binding $parent[u:MessageBoxControl].Close}" Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}">
<MenuItem.Icon>
<PathIcon
Theme="{StaticResource InnerPathIcon}"

View File

@@ -76,7 +76,7 @@ public class StyleClassTests
Assert.DoesNotContain("Custom", dialog.Classes);
var okButton = dialog.GetVisualDescendants().OfType<Button>().SingleOrDefault(a=>a.Name == DefaultDialogControl.PART_OKButton);
Assert.NotNull(okButton);
Assert.Equal("确", okButton.Content);
Assert.Equal("确", okButton.Content);
var cancelButton = dialog.GetVisualDescendants().OfType<Button>().SingleOrDefault(a=>a.Name == DefaultDialogControl.PART_CancelButton);
Assert.NotNull(cancelButton);
Assert.Equal("取消", cancelButton.Content);