refactor(工具栏): 将BorderTools从Border改为Popup控件并优化显示逻辑
重构工具栏中的BorderTools控件,将其从Border改为Popup控件,并添加自定义位置回调 优化显示/隐藏逻辑,使用IsOpen属性替代Visibility控制 更新相关动画效果调用为对应的Popup版本 调整UI样式和布局,提升视觉一致性
This commit is contained in:
@@ -99,10 +99,15 @@ namespace Ink_Canvas.Controls.Toolbar
|
||||
visible = cfg.Visible;
|
||||
try
|
||||
{
|
||||
var menuElement = host.Window.FindName(item.MenuPanelName) as FrameworkElement;
|
||||
if (menuElement != null)
|
||||
var menuElement = host.Window.FindName(item.MenuPanelName);
|
||||
if (menuElement is System.Windows.Controls.Primitives.Popup popup)
|
||||
{
|
||||
menuElement.Visibility = visible ? Visibility.Visible : Visibility.Collapsed;
|
||||
popup.IsOpen = visible;
|
||||
LogHelper.WriteLogToFile($"ToolbarRegistry: 菜单 Popup [{item.MenuPanelName}] -> {(visible ? "Open" : "Closed")}", LogHelper.LogType.Info);
|
||||
}
|
||||
else if (menuElement is FrameworkElement fe)
|
||||
{
|
||||
fe.Visibility = visible ? Visibility.Visible : Visibility.Collapsed;
|
||||
LogHelper.WriteLogToFile($"ToolbarRegistry: 菜单 [{item.MenuPanelName}] -> {(visible ? "Visible" : "Collapsed")}", LogHelper.LogType.Info);
|
||||
}
|
||||
else
|
||||
|
||||
+40
-40
@@ -2985,53 +2985,53 @@
|
||||
<Grid Width="0" d:Visibility="Visible">
|
||||
</Grid>
|
||||
</ikw:SimpleStackPanel>
|
||||
<Border Name="BorderTools"
|
||||
Visibility="Collapsed" d:Visibility="Visible"
|
||||
Margin="-103,-156,-16,37" CornerRadius="6"
|
||||
Background="{DynamicResource FloatBarBackground}"
|
||||
BorderBrush="#2563eb" BorderThickness="1">
|
||||
<ikw:SimpleStackPanel Margin="-1">
|
||||
<Border BorderBrush="#1e3a8a" BorderThickness="0,0,0,1" CornerRadius="8,8,0,0" Background="#2563eb">
|
||||
<Grid Margin="5">
|
||||
<Popup x:Name="BorderTools"
|
||||
Placement="Custom"
|
||||
AllowsTransparency="True"
|
||||
StaysOpen="True"
|
||||
IsOpen="False">
|
||||
<Border CornerRadius="6" Background="#F4F4F5"
|
||||
BorderBrush="#3b82f6" BorderThickness="1">
|
||||
<ikw:SimpleStackPanel Margin="-1">
|
||||
<Grid Margin="8,8,8,5">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" VerticalAlignment="Center"
|
||||
Text="{i18n:I18n Key=Tools_MoreFeaturesTitle}"
|
||||
Foreground="White" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="0" VerticalAlignment="Center" FontSize="12"
|
||||
Text="{i18n:I18n Key=Tools_MoreFeaturesTitle}"
|
||||
Foreground="#2563eb" FontWeight="Bold"/>
|
||||
<ui:FontIcon Grid.Column="1" Icon="{x:Static ui:SegoeFluentIcons.ChromeCloseContrast}"
|
||||
Foreground="White" FontSize="12"
|
||||
MouseDown="Border_MouseDown"
|
||||
MouseUp="CloseBordertools_MouseUp" />
|
||||
Foreground="#DC2626" FontSize="12" VerticalAlignment="Center"
|
||||
MouseDown="Border_MouseDown"
|
||||
MouseUp="CloseBordertools_MouseUp" />
|
||||
</Grid>
|
||||
</Border>
|
||||
<!---->
|
||||
<ikw:SimpleStackPanel Margin="10,3,10,2" Spacing="2">
|
||||
<ikw:SimpleStackPanel.Resources>
|
||||
<Style TargetType="Label" BasedOn="{StaticResource AutoFitToolPopupLabel8}" />
|
||||
</ikw:SimpleStackPanel.Resources>
|
||||
<ikw:SimpleStackPanel Margin="0,0,0,0" Height="40"
|
||||
Orientation="Horizontal">
|
||||
<controls:ToolMenuButton x:Name="TimerToolBtn" ButtonMouseUp="ImageCountdownTimer_MouseUp" Label="{i18n:I18n Key=Tools_Timer}" />
|
||||
<controls:ToolMenuButton x:Name="RandomDrawToolBtn" ButtonMouseUp="SymbolIconRand_MouseUp" Label="{i18n:I18n Key=Tools_RandomDraw}" />
|
||||
<controls:ToolMenuButton x:Name="SingleDrawToolBtn" ButtonMouseUp="SymbolIconRandOne_MouseUp" Label="{i18n:I18n Key=Tools_SingleDraw}" />
|
||||
</ikw:SimpleStackPanel>
|
||||
<ikw:SimpleStackPanel Margin="0,0,0,0" Height="40"
|
||||
Orientation="Horizontal">
|
||||
<controls:ToolMenuButton x:Name="SaveToolBtn" ButtonMouseDown="Border_MouseDown" ButtonMouseUp="SymbolIconSaveStrokes_MouseUp" Label="{i18n:I18n Key=Tools_Save}" />
|
||||
<controls:ToolMenuButton x:Name="OpenToolBtn" ButtonMouseDown="Border_MouseDown" ButtonMouseUp="SymbolIconOpenStrokes_MouseUp" Label="{i18n:I18n Key=Tools_Open}" />
|
||||
<controls:ToolMenuButton x:Name="ReplayToolBtn" ButtonMouseUp="GridInkReplayButton_MouseUp" Label="{i18n:I18n Key=Tools_Replay}" />
|
||||
</ikw:SimpleStackPanel>
|
||||
<ikw:SimpleStackPanel Margin="0,0,0,0" Height="40"
|
||||
Orientation="Horizontal">
|
||||
<controls:ToolMenuButton x:Name="ScreenshotToolBtn" ButtonMouseUp="SymbolIconScreenshot_MouseUp" Label="{i18n:I18n Key=Tools_Screenshot}" />
|
||||
<controls:ToolMenuButton x:Name="ManualToolBtn" ButtonMouseUp="OperatingGuideWindowIcon_MouseUp" Label="{i18n:I18n Key=Tools_Manual}" />
|
||||
<controls:ToolMenuButton x:Name="SettingsToolBtn" ButtonMouseUp="SymbolIconSettings_Click" Label="{i18n:I18n Key=Tools_Settings}" />
|
||||
</ikw:SimpleStackPanel>
|
||||
<Border Margin="8,0,8,8" BorderBrush="#D4D4D8" Background="#fafafa" BorderThickness="1"
|
||||
CornerRadius="6">
|
||||
<ikw:SimpleStackPanel Margin="2" Spacing="1">
|
||||
<ikw:SimpleStackPanel.Resources>
|
||||
<Style TargetType="Label" BasedOn="{StaticResource AutoFitToolPopupLabel8}" />
|
||||
</ikw:SimpleStackPanel.Resources>
|
||||
<ikw:SimpleStackPanel Margin="0,0,0,0" Height="40" Orientation="Horizontal">
|
||||
<controls:ToolMenuButton x:Name="TimerToolBtn" ButtonMouseUp="ImageCountdownTimer_MouseUp" Label="{i18n:I18n Key=Tools_Timer}" />
|
||||
<controls:ToolMenuButton x:Name="RandomDrawToolBtn" ButtonMouseUp="SymbolIconRand_MouseUp" Label="{i18n:I18n Key=Tools_RandomDraw}" />
|
||||
<controls:ToolMenuButton x:Name="SingleDrawToolBtn" ButtonMouseUp="SymbolIconRandOne_MouseUp" Label="{i18n:I18n Key=Tools_SingleDraw}" />
|
||||
</ikw:SimpleStackPanel>
|
||||
<ikw:SimpleStackPanel Margin="0,0,0,0" Height="40" Orientation="Horizontal">
|
||||
<controls:ToolMenuButton x:Name="SaveToolBtn" ButtonMouseDown="Border_MouseDown" ButtonMouseUp="SymbolIconSaveStrokes_MouseUp" Label="{i18n:I18n Key=Tools_Save}" />
|
||||
<controls:ToolMenuButton x:Name="OpenToolBtn" ButtonMouseDown="Border_MouseDown" ButtonMouseUp="SymbolIconOpenStrokes_MouseUp" Label="{i18n:I18n Key=Tools_Open}" />
|
||||
<controls:ToolMenuButton x:Name="ReplayToolBtn" ButtonMouseUp="GridInkReplayButton_MouseUp" Label="{i18n:I18n Key=Tools_Replay}" />
|
||||
</ikw:SimpleStackPanel>
|
||||
<ikw:SimpleStackPanel Margin="0,0,0,0" Height="40" Orientation="Horizontal">
|
||||
<controls:ToolMenuButton x:Name="ScreenshotToolBtn" ButtonMouseUp="SymbolIconScreenshot_MouseUp" Label="{i18n:I18n Key=Tools_Screenshot}" />
|
||||
<controls:ToolMenuButton x:Name="ManualToolBtn" ButtonMouseUp="OperatingGuideWindowIcon_MouseUp" Label="{i18n:I18n Key=Tools_Manual}" />
|
||||
<controls:ToolMenuButton x:Name="SettingsToolBtn" ButtonMouseUp="SymbolIconSettings_Click" Label="{i18n:I18n Key=Tools_Settings}" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</ikw:SimpleStackPanel>
|
||||
</Border>
|
||||
</ikw:SimpleStackPanel>
|
||||
</ikw:SimpleStackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
</Popup>
|
||||
</ikw:SimpleStackPanel>
|
||||
</Grid>
|
||||
|
||||
|
||||
@@ -108,10 +108,17 @@ namespace Ink_Canvas
|
||||
PopupPrimaryAxis.Vertical)
|
||||
};
|
||||
|
||||
BorderTools.CustomPopupPlacementCallback =
|
||||
(popupSize, targetSize, offset) => new[]
|
||||
{
|
||||
new CustomPopupPlacement(
|
||||
new Point(targetSize.Width / 2 - popupSize.Width / 2, -popupSize.Height),
|
||||
PopupPrimaryAxis.Vertical)
|
||||
};
|
||||
BlackboardLeftSide.Visibility = Visibility.Collapsed;
|
||||
BlackboardCenterSide.Visibility = Visibility.Collapsed;
|
||||
BlackboardRightSide.Visibility = Visibility.Collapsed;
|
||||
BorderTools.Visibility = Visibility.Collapsed;
|
||||
BorderTools.IsOpen = false;
|
||||
LeftSidePanelForPPTNavigation.Visibility = Visibility.Collapsed;
|
||||
RightSidePanelForPPTNavigation.Visibility = Visibility.Collapsed;
|
||||
TwoFingerGestureBorder.Visibility = Visibility.Collapsed;
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Ink_Canvas
|
||||
else
|
||||
{
|
||||
AnimationsHelper.HideWithSlideAndFade(EraserSizePanel);
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(PenPalette);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardPenPalette);
|
||||
|
||||
@@ -294,7 +294,7 @@ namespace Ink_Canvas
|
||||
/// </summary>
|
||||
private void HideSubPanelsImmediately()
|
||||
{
|
||||
BorderTools.Visibility = Visibility.Collapsed;
|
||||
BorderTools.IsOpen = false;
|
||||
BoardBorderToolsPopup.IsOpen = false;
|
||||
PenPalette.Visibility = Visibility.Collapsed;
|
||||
BoardPenPalette.Visibility = Visibility.Collapsed;
|
||||
@@ -376,7 +376,7 @@ namespace Ink_Canvas
|
||||
/// </param>
|
||||
internal async void HideSubPanels(string mode = null, bool autoAlignCenter = false)
|
||||
{
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(PenPalette);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardPenPalette);
|
||||
@@ -1099,7 +1099,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
|
||||
RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
|
||||
|
||||
@@ -1151,7 +1151,7 @@ namespace Ink_Canvas
|
||||
/// <param name="e">路由事件参数</param>
|
||||
private void OperatingGuideWindowIcon_MouseUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
|
||||
|
||||
@@ -1171,7 +1171,7 @@ namespace Ink_Canvas
|
||||
LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
|
||||
RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
|
||||
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
|
||||
|
||||
@@ -1306,7 +1306,7 @@ namespace Ink_Canvas
|
||||
LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
|
||||
RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
|
||||
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
|
||||
|
||||
@@ -1385,7 +1385,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
//if (lastBorderMouseDownObject != sender) return;
|
||||
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
|
||||
|
||||
@@ -1687,9 +1687,9 @@ namespace Ink_Canvas
|
||||
/// <param name="e">鼠标按钮事件参数</param>
|
||||
internal void SymbolIconTools_MouseUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if (BorderTools.Visibility == Visibility.Visible || BoardBorderToolsPopup.IsOpen)
|
||||
if (BorderTools.IsOpen || BoardBorderToolsPopup.IsOpen)
|
||||
{
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
}
|
||||
else
|
||||
@@ -1697,8 +1697,7 @@ namespace Ink_Canvas
|
||||
HideSubPanels();
|
||||
if (currentMode == 0)
|
||||
{
|
||||
UpdateBorderToolsPosition();
|
||||
AnimationsHelper.ShowWithSlideFromBottomAndFade(BorderTools);
|
||||
AnimationsHelper.ShowPopupWithSlideAndFade(BorderTools);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -98,7 +98,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
if (lastBorderMouseDownObject != sender || inkCanvas.Visibility != Visibility.Visible) return;
|
||||
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
|
||||
GridNotifications.Visibility = Visibility.Collapsed;
|
||||
@@ -916,7 +916,7 @@ namespace Ink_Canvas
|
||||
private void SymbolIconOpenStrokes_MouseUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if (lastBorderMouseDownObject != sender) return;
|
||||
AnimationsHelper.HideWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
|
||||
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
|
||||
|
||||
var openFileDialog = new OpenFileDialog();
|
||||
|
||||
@@ -32,7 +32,11 @@ namespace Ink_Canvas
|
||||
internal void AttachSymbolIconRedo(ToolbarImageButton btn) => SymbolIconRedo = btn;
|
||||
internal void AttachCursorWithDelBtn(ToolbarImageButton btn) => CursorWithDelFloatingBarBtn = btn;
|
||||
internal void AttachWhiteboardBtn(ToolbarImageButton btn) => WhiteboardFloatingBarBtn = btn;
|
||||
internal void AttachToolsBtn(ToolbarImageButton btn) => ToolsFloatingBarBtn = btn;
|
||||
internal void AttachToolsBtn(ToolbarImageButton btn)
|
||||
{
|
||||
ToolsFloatingBarBtn = btn;
|
||||
BorderTools.PlacementTarget = btn;
|
||||
}
|
||||
internal void AttachFoldIcon(ToolbarImageButton btn) => Fold_Icon = btn;
|
||||
|
||||
internal void InitializeToolbarPlugins()
|
||||
|
||||
Reference in New Issue
Block a user