Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未在UIElement边界之外绘制WPF装饰器_C#_Wpf - Fatal编程技术网

C# 未在UIElement边界之外绘制WPF装饰器

C# 未在UIElement边界之外绘制WPF装饰器,c#,wpf,C#,Wpf,我正在为应用程序构建使用教程,并试图通过指向正确的选项并解释它们来引导用户完成步骤,当用户成功完成当前步骤时,应该会自动转到下一步。经过一些研究后,我发现了装饰器,认为它们最适合装饰,并根据链接上的教程构建了课程: 装饰器在主窗口上的作用应该是这样的,但当从菜单访问某个选项时,我得到如下结果: 因此,装饰器不会在装饰元素外部渲染。如果我理解正确,纠正我如果我错了,他们有自己的层,应该在UIElement上渲染?我知道它们不能在主窗口之外渲染,但是它里面的元素也一样吗 main window.

我正在为应用程序构建使用教程,并试图通过指向正确的选项并解释它们来引导用户完成步骤,当用户成功完成当前步骤时,应该会自动转到下一步。经过一些研究后,我发现了装饰器,认为它们最适合装饰,并根据链接上的教程构建了课程:

装饰器在主窗口上的作用应该是这样的,但当从菜单访问某个选项时,我得到如下结果:

因此,装饰器不会在装饰元素外部渲染。如果我理解正确,纠正我如果我错了,他们有自己的层,应该在UIElement上渲染?我知道它们不能在主窗口之外渲染,但是它里面的元素也一样吗

main window.xaml

   <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作为基础来实现您自己的气球版本。尽管如此,这将需要相当多的工作来完成所有关于气球弹出的定位(也许还有跟踪)的管道。或者,您可以查找提供所需功能的库。这样一个库的一个可能的候选者可以是这个:或这个:。更多选择,谷歌是你的朋友…;)