Silverlight: нужно ПОСЛЕ приложения. Текущий. Хост. Содержание. СОБЫТИЕ FullScreenChanged

Проблема:

Я использую Приложение Silverlight. Текущий. Хост. Содержание. Событие FullScreenChanged для обнаружения, когда пользователь переключается назад и вперед между полноэкранным режимом. К сожалению, кажется, что это событие стреляет, ПРЕЖДЕ ЧЕМ что-либо на экране на самом деле изменено.

Я должен знать ActualWidth/ActualHeight различного FrameworkElements ПОСЛЕ ТОГО, КАК изменение в и с полного экрана будет завершено... Какие-либо идеи?

1
задан Scrappydog 2 July 2010 в 21:52
поделиться

2 ответа

Вы сможете получить правильный размер, обработав событие SizeChanged в главном окне приложения. Если вам явно нужно знать, переходит ли приложение из / в полноэкранный режим, возможно, вы могли бы установить флаг в обработчике событий FullScreenChanged - например, свойство типа bool под названием IsFullScreenChanging - затем вы можете проверить это свойство в обработчике событий SizeChanged в главном окне, сделать все, что вам нужно, и сбросить флаг в ожидании следующего события FullScreenChanged.

cs:

using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;

namespace SilverlightApplication1
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            SizeChanged += MainPageSizeChanged;
        }

        private static void MainPageSizeChanged(object sender, SizeChangedEventArgs e)
        {
            Debug.WriteLine("Size is now " + e.NewSize);
        }

        private void ToggleFullScreenButtonClick(object sender, RoutedEventArgs e)
        {
            Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
        }
    }
}

xaml:

<UserControl x:Class="SilverlightApplication1.MainPage"
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"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">


    <Grid x:Name="LayoutRoot" Background="White">
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="79,110,0,0" Name="FullScreenButton" VerticalAlignment="Top" Width="75" Click="ToggleFullScreenButtonClick" />
    </Grid>
</UserControl>
2
ответ дан 2 September 2019 в 23:20
поделиться

Простой ответ, продемонстрированный в правильном ответе Стива выше, заключается в использовании:

SizeChangedEventArgs.NewSize

(Добавляю как отдельный краткий ответ для удобства будущих читателей...)

0
ответ дан 2 September 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: