(System.ArgumentException) Значение не попадает в ожидаемое исключение диапазона, генерируемое при открытии всплывающего окна в другом всплывающем окне в uwp - PullRequest
0 голосов
/ 13 апреля 2020

(System.ArgumentException) Значение не попадает в ожидаемое исключение диапазона, генерируемое при открытии всплывающего окна в другом всплывающем окне в uwp.

Открытие всплывающего окна при нажатии кнопки. Пожалуйста, используйте код

<Button Width="50" Height="30" Name="btn1" 
            HorizontalAlignment="Center" VerticalAlignment="Center" 
            Content="Click" Click="Button_Click" />
    <Popup Name="popUp1" Width="200" Height="200"/>
    <Popup Name="popUp2" Width="200" Height="200"/>

private void Button_Click(object sender, RoutedEventArgs e)
    {
        Button btn2 = new Button();
        btn2.Width = 200;
        btn2.Height = 50;            
        btn2.Content = "PopUp1";
        popUp1.Child = btn2;
        popUp1.IsOpen = true;
        btn2.Click += Btn2_Click;
    }

    private void Btn2_Click(object sender, RoutedEventArgs e)
    {            
        popUp2.Child = btn1;
        popUp2.IsOpen = true;
    }

enter image description here

1 Ответ

1 голос
/ 13 апреля 2020

(System.ArgumentException) Значение не попадает в ожидаемое исключение диапазона.

Это исключение, потому что вы пытались установить btn1 как Дочерний элемент popUp2, но btn1 уже имеет родительскую панель. Поэтому, если вы все еще хотите, чтобы btn1 был дочерним элементом popUp2, вы можете сначала удалить его со своей родительской панели или создать новую кнопку и установить ее событие Click как событие Click btn1. Например:

.xaml:

<StackPanel x:Name="MyPanel">
    <Button Width="50" Height="30" Name="btn1" 
        HorizontalAlignment="Center" VerticalAlignment="Center" 
        Content="Click" Click="Button_Click" />
    <Popup Name="popUp1" Width="200" Height="200"/>
    <Popup Name="popUp2" Width="200" Height="200"/>
</StackPanel>

.cs:

private void Btn2_Click(object sender, RoutedEventArgs e)
{
    MyPanel.Children.Remove(btn1);
    popUp2.Child = btn1;
    popUp2.IsOpen = true;
}

Или

private void Btn2_Click(object sender, RoutedEventArgs e)
{
    Button btn = new Button();
    btn.Width = 200;
    btn.Height = 50;
    btn.Content = "PopUp2";
    btn.Click += Button_Click;
    popUp2.Child = btn;
    popUp2.IsOpen = true;
}
...