C# 未在UIElement边界之外绘制WPF装饰器
我正在为应用程序构建使用教程,并试图通过指向正确的选项并解释它们来引导用户完成步骤,当用户成功完成当前步骤时,应该会自动转到下一步。经过一些研究后,我发现了装饰器,认为它们最适合装饰,并根据链接上的教程构建了课程: 装饰器在主窗口上的作用应该是这样的,但当从菜单访问某个选项时,我得到如下结果: 因此,装饰器不会在装饰元素外部渲染。如果我理解正确,纠正我如果我错了,他们有自己的层,应该在UIElement上渲染?我知道它们不能在主窗口之外渲染,但是它里面的元素也一样吗 main window.xamlC# 未在UIElement边界之外绘制WPF装饰器,c#,wpf,C#,Wpf,我正在为应用程序构建使用教程,并试图通过指向正确的选项并解释它们来引导用户完成步骤,当用户成功完成当前步骤时,应该会自动转到下一步。经过一些研究后,我发现了装饰器,认为它们最适合装饰,并根据链接上的教程构建了课程: 装饰器在主窗口上的作用应该是这样的,但当从菜单访问某个选项时,我得到如下结果: 因此,装饰器不会在装饰元素外部渲染。如果我理解正确,纠正我如果我错了,他们有自己的层,应该在UIElement上渲染?我知道它们不能在主窗口之外渲染,但是它里面的元素也一样吗 main window.
<Window x:Class="_2EV.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:tutorial="clr-namespace:_2EV.tutorial"
xmlns:local="clr-namespace:_2EV"
mc:Ignorable="d"
Title="MainWindow" Height="750" Width="430" MaxHeight="750" MaxWidth="430" Closing="Window_Closing">
<Window.Resources>
<ControlTemplate x:Key="step1">
<Grid HorizontalAlignment="Left" VerticalAlignment="Top">
<Grid Margin="5 10 0 0">
<Rectangle Stroke="Black" Fill="Yellow" RadiusX="6" RadiusY="6" Margin="0 20 0 0"/>
<Path Stroke="Black" Fill="Yellow" Data="M 25 20 L 20 0 33 20" Margin="0 1 0 0"/>
<TextBlock Text="Press new to acces add menu" Margin="5 25 0 0"/>
</Grid>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="step2">
<Grid HorizontalAlignment="Left" VerticalAlignment="Top">
<Grid Margin="5 10 0 0">
<Rectangle Stroke="Black" Fill="Yellow" RadiusX="6" RadiusY="6" Margin="0 20 0 0"/>
<Path Stroke="Black" Fill="Yellow" Data="M 25 20 L 20 0 33 20" Margin="0 1 0 0"/>
<TextBlock Text="Press classroom to acces new classrom menu" Margin="5 25 0 0"/>
</Grid>
</Grid>
</ControlTemplate>
</Window.Resources>
<DockPanel>
<Menu DockPanel.Dock ="Top" HorizontalAlignment="Stretch">
<MenuItem Header="_Tables" InputGestureText="F2" Click="MenuItem_Click_4">
<MenuItem Header="_Classrooms" Click="MenuItem_Click" ToolTip="Classrooms table, add, edit, delete classrooms"/>
<MenuItem Header="_Course" Click="MenuItem_Click_1" ToolTip="Courses table, add, edit, delete courses"/>
<MenuItem Header="_Software" Click="MenuItem_Click_2" ToolTip="Software table, add, edit, delete software"/>
<MenuItem Header="_Subject" Click="MenuItem_Click_3" ToolTip="Subjects table, add, edit, delete subjects"/>
</MenuItem>
<MenuItem x:Name="_NewHeader" Header="_New" Click="step1_start" tutorial:Adorners.Template="{StaticResource step1}">
<MenuItem Header="_Classroom" ToolTip="Classrooms table, add, edit, delete classrooms" Name="AddClassroomMenuItem" Click="AddClassroomMenuItem_Click" tutorial:Adorners.Template="{StaticResource step2}"/>
<MenuItem Header="_Course" ToolTip="Courses table, add, edit, delete courses" Name="AddCourseMenuItem" Click="AddCourseMenuItem_Click"/>
<MenuItem Header="_Software" ToolTip="Software table, add, edit, delete software" Name="AddSoftwareMenuItem" Click="AddSoftwareMenuItem_Click"/>
<MenuItem Header="_Subject" ToolTip="Subjects table, add, edit, delete subjects" Name="AddSubjectMenuItem" Click="AddSubjectMenuItem_Click"/>
</MenuItem>
<Button x:Name="tutorialButton" Content="Tutorial" Width="75" Click="startTutorial"/>
</Menu>
<DockPanel DockPanel.Dock="Right">
<DockPanel>
</DockPanel>
</DockPanel>
</DockPanel>
</Window>
您正受到所附着图元的约束。你能给我们更多的代码吗?窗口/菜单/装饰器的位置?因此根本不可能将其扩展到装饰元素的边界上?当然,我附加了整个MainWindow.xaml,很可能是因为您在弹出窗口中使用它。Popup就像一个单独的窗口,它不是主窗口视觉树的一部分,因此您不能将装饰器扩展到该弹出窗口(菜单下拉菜单)之外。您认为解决方案是什么?@lups,您需要使用Popup作为基础来实现您自己的气球版本。尽管如此,这将需要相当多的工作来完成所有关于气球弹出的定位(也许还有跟踪)的管道。或者,您可以查找提供所需功能的库。这样一个库的一个可能的候选者可以是这个:或这个:。更多选择,谷歌是你的朋友…;)