gpt4 book ai didi

c# - 覆盖 AvalonDock 悬浮窗;忽略 zIndex

转载 作者:行者123 更新时间:2023-11-30 18:21:25 26 4
gpt4 key购买 nike

我正在尝试以这样一种方式设置 AvalonDock float 窗口的样式,以便我可以在所有 float 窗口上显示叠加层。我打算将其用于对话服务,然后可以通过用半透明的实心画笔覆盖所有 float 窗口来显示“模态”对话框。

我的想法是修改 LayoutAnchorableFloatingWindwoControl 的样式。通用主题的原始样式可以在下面找到——包括我注释掉的叠加网格:

<Style x:Key="{x:Type avalonDockControls:LayoutAnchorableFloatingWindowControl}" TargetType="{x:Type avalonDockControls:LayoutAnchorableFloatingWindowControl}">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome
ResizeBorderThickness="10"
CaptionHeight="16"
CornerRadius="3,3,3,3"
GlassFrameThickness="0"
ShowSystemMenu="True"/>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutAnchorableFloatingWindowControl}">
<Grid>

<!-- My overlay grid:
<Grid x:Name="OVERLAY_GRID" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Red" Panel.ZIndex="100000"/>
-->

<Border x:Name="WindowBorder" BorderThickness="3" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}">
<Grid Margin="3">
<Grid.RowDefinitions>
<RowDefinition Height="16"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>

<Border
Visibility="{Binding Path=Model.IsSinglePane, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}">
<avalonDockControls:DropDownControlArea
DropDownContextMenu="{Binding Model.Root.Manager.AnchorableContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
DropDownContextMenuDataContext="{Binding Path=SingleContentLayoutItem, RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter Content="{Binding Model.SinglePane.SelectedContent, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.AnchorableTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}"/>
</avalonDockControls:DropDownControlArea>
</Border>


<avalonDockControls:DropDownButton
x:Name="SinglePaneContextMenu" ........../>
</avalonDockControls:DropDownButton>

<Button ...........>
</Button>

<Button ........>
</Button>

<Button .........>
</Button>
</Grid>
<ContentPresenter
Content="{TemplateBinding Content}" Grid.Row="1"/>
</Grid>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="WindowState" Value="Maximized">
<Setter Property="Padding" Value="3" TargetName="WindowBorder"/>
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter TargetName="WindowBorder" Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

当我使用带有常规通用主题的原始 MVVMTestApp 时, float 窗口如下所示:

Regular generic theme

当我取消对 OVERLAY_GRID 的注释时,您会期望整个窗口被一个巨大的红色 block 隐藏。但是,有一个问题...

The content-presenter is in front, even though it should not be

我完全不知道是什么原因造成的。我已经尝试为 WindowBorder 和 ContentPresenter 显式降低 Panel.ZIndex 值,但这没有帮助。

我还将 WindowBorder 包装在 AdornerDecorator 元素中,然后尝试在代码中覆盖装饰层,但我遇到了同样的问题; ContentControl 仍在顶部。我不知道这里发生了什么。

AvalonDock 从 HwndHost 派生类以显示其 float 窗口 - 这会导致 Airpsace 问题导致我的问题吗?再一次,我实际上认为这只会在您混合使用 WinForms 时发生,而据我所知,所有托管元素都是纯 WPF。

有谁知道是什么原因导致的,或者更好的是,如何解决这个问题?

最佳答案

仅供引用,如果其他人将来正在寻找解决方案,我在这里与开发人员讨论过

http://wpftoolkit.codeplex.com/discussions/651639

我的解决方案是用另一个控件(例如 ContentPresenter)替换 FloatingWindowContentHost - 它使用 HwndHost 来实现 WinForms 兼容性。相对容易修复,只要您不打算在其中托管任何 WinForms。它确实需要您自己重新编译 AvalonDock,因为这是代码更改。

关于c# - 覆盖 AvalonDock 悬浮窗;忽略 zIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35521734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com