Как да деактивирате страницата, когато се показва изскачащ прозорец

Опитвам се да покажа изскачащ прозорец на страница. Желаното поведение е страницата да е във фонов режим, където ще се показва изскачащият прозорец. Когато се покаже изскачащият прозорец, все още мога да взаимодействам с фоновата страница. Но трябва да деактивирам фоновата страница.

<Grid>
    <Grid>
        <Pivot IsEnabled="{Binding IsPopUpOpen , Converter={StaticResource BooleanInversionConverter}}">
        </Pivot>
    </Grid>

    <Popup Name="Popup" IsOpen="{Binding IsPopUpOpen}" VerticalAlignment="Center">
        <TextBox Foreground="Black" FontSize="28" FontWeight="Normal" BorderBrush="Black" BorderThickness="2" HorizontalAlignment="Left" Width="440"/>
    </Popup>

</Grid>

Когато стартирам този код, получавам изключение:

System.InvalidOperationException беше необработено Съобщение: Възникна необработено изключение от тип „System.InvalidOperationException“ в System.Windows.ni.dll Допълнителна информация: Не може да се разреши TargetName Img.

Кажете ми как да деактивирам пивота с помощта на MVVM подход.


person Arjun K R    schedule 29.09.2014    source източник


Отговори (2)


Просто поставете своя изскачащ прозорец над всички други контроли. пример:

<grid>
  <yourxaml>
</grid>
<popup horizontalAlignement="Stretch" verticalignementAlignement="Stretch"></popup>

Тук потребителят не може да взаимодейства с друга част от приложението, тъй като вашият контролен изскачащ прозорец е над всички останали.

person MatDev8    schedule 29.09.2014
comment
тогава фонът на изскачащия прозорец ще създаде наслагване. Искам страницата да се вижда. Изскачащият прозорец обикновено не скрива целия екран. - person Arjun K R; 29.09.2014
comment
О, искате да показвате изскачащ прозорец и да не показвате приложението на заден план? наистина странно, но защо не създадете обща страница за показване на вашето съобщение? Страница w - person MatDev8; 29.09.2014

Трябва да можете да се абонирате за отворени и затворени събития, да получите прозореца и да деактивирате самия прозорец. Имам дъщерен клас, така че вместо това избрах да отменя, тъй като искам изскачащ прозорец с възможност за плъзгане. По-долу работи за мен.

        protected override void OnOpened(EventArgs e)
        {
            base.OnOpened(e);

            var parentWindow = Window.GetWindow(this);

            parentWindow.IsEnabled = false;
        }

        protected override void OnClosed(EventArgs e)
        {
            base.OnClosed(e);

            var parentWindow = Window.GetWindow(this);

            parentWindow.IsEnabled = true;
        }
person Gregory A. Owen    schedule 13.02.2019