Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
WPF嵌套弹出窗口未关闭_Wpf - Fatal编程技术网

WPF嵌套弹出窗口未关闭

WPF嵌套弹出窗口未关闭,wpf,Wpf,我有一个带有图像的窗口,其中显示了其MouseEnter事件处理程序中的弹出窗口: private void theImage_MouseEnter(object sender, MouseEventArgs e) { contolPopup.IsOpen = true; } private void setButton_Click(object sender, RoutedEventArgs e) { paramPopu

我有一个带有图像的窗口,其中显示了其MouseEnter事件处理程序中的弹出窗口:

    private void theImage_MouseEnter(object sender, MouseEventArgs e)
    {
        contolPopup.IsOpen = true;
    }
    private void setButton_Click(object sender, RoutedEventArgs e)
    {
        paramPopup.IsOpen = true;
    }
此contolPopup中有一个按钮,显示单击事件处理程序中的另一个弹出窗口:

    private void theImage_MouseEnter(object sender, MouseEventArgs e)
    {
        contolPopup.IsOpen = true;
    }
    private void setButton_Click(object sender, RoutedEventArgs e)
    {
        paramPopup.IsOpen = true;
    }
这个paramPopup在显示后的行为有点奇怪:如果我单击它外部的某个地方,它不会关闭,但是如果我单击这个paramPopup内部的某个控件,然后单击它外部的某个地方,它会很好地关闭

什么会导致这种行为

我试图集中精力,但这无助于:

    private void setButton_Click(object sender, RoutedEventArgs e)
    {
        paramPopup.IsOpen = setButton.IsChecked??false;

        paramPopup.Focus();
    }
对于两个弹出窗口,Popup.StaysOpen都设置为false。我使用.NET4.0

下面我提供了完整的源代码:

从窗口打开第一个弹出窗口:

<Window x:Class="GeoControls.WebcamWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:GeoControls"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        SizeChanged="Window_SizeChanged" Loaded="Window_Loaded" SizeToContent="WidthAndHeight" ResizeMode="NoResize"
        Title="{Binding Name}"
        MouseEnter="theImage_MouseEnter" MouseLeave="theImage_MouseLeave" MouseLeftButtonUp="Window_MouseLeftButtonUp" Closed="Window_Closed">
    <Grid Background="Black">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Image Grid.Row="0" Grid.ColumnSpan="2" Name="theImage" Width="{Binding CurrentResolution.Width}" Height="{Binding CurrentResolution.Height}" />
        <TextBlock Name="waitingTextBlock" Grid.Row="0" Text="Waiting the response from TV Server..." Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
        <Popup Name="contolPopup" StaysOpen="False" PlacementTarget="{Binding ElementName=theImage}" PopupAnimation="Scroll" Placement="Left" AllowsTransparency="True">
            <Border CornerRadius="10" BorderThickness="1" BorderBrush="Black" Padding="10" Background="White">
                <local:WebcamControl x:Name="webcamControl" Background="White">
                </local:WebcamControl>
            </Border>
        </Popup>
    </Grid>
</Window>
第二个弹出窗口由第一个弹出窗口中WebcamControl中包含的ParamButtons打开:

<UserControl x:Class="GeoControls.ParamButtons"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             xmlns:local="clr-namespace:GeoControls"
             d:DesignHeight="30" d:DesignWidth="300">
    <Grid>

        ............ omitted some code here................                

        <Popup Name="paramPopup" StaysOpen="False" PlacementTarget="{Binding ElementName=setButton}" AllowsTransparency="True" Closed="paramPopup_Closed">
            <Border Focusable="True" CornerRadius="10" BorderThickness="1" BorderBrush="Black" Padding="10" Background="White">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="300"/>
                        <ColumnDefinition Width="50"/>
                        <ColumnDefinition Width="50"/>
                    </Grid.ColumnDefinitions>

                    <local:ParamSlider Grid.Column="0" x:Name="paramSlider" />
                    <Button Content="OK" Click="okButton_Click" Grid.Column="1" Margin="5" />
                    <Button Content="Cancel" Click="cancelButton_Click" Grid.Column="2" Margin="5" />
                </Grid>
            </Border>
        </Popup>
    </Grid>
</UserControl>

您的弹出窗口是如何定义的?在不知道它们是如何定义的以及它们的位置的情况下,很难判断问题是什么。添加了XAML源代码奇怪,它对我来说没问题。可能是关闭的处理程序中的某些内容导致它重新打开,但这只是一个猜测。