Silverlight:Application.Current.Host.Content.FullScreenChanged事件之后的需要

Silverlight:Application.Current.Host.Content.FullScreenChanged事件之后的需要,silverlight,xaml,expression-blend,Silverlight,Xaml,Expression Blend,问题: 我使用Silverlight Application.Current.Host.Content.FullScreenChanged事件来检测用户何时在全屏模式之间来回切换。不幸的是,该事件似乎在屏幕上的任何内容实际调整大小之前触发 我需要知道在完成从全屏到全屏的更改后各种框架元素的实际宽度/实际高度。。。有什么想法吗?您应该能够通过处理主应用程序窗口的SizeChanged事件来获得正确的大小。如果您明确需要知道应用程序是否正在从全屏模式更改为全屏模式,也许您可以在FullScreenC

问题:

我使用Silverlight Application.Current.Host.Content.FullScreenChanged事件来检测用户何时在全屏模式之间来回切换。不幸的是,该事件似乎在屏幕上的任何内容实际调整大小之前触发


我需要知道在完成从全屏到全屏的更改后各种框架元素的实际宽度/实际高度。。。有什么想法吗?

您应该能够通过处理主应用程序窗口的SizeChanged事件来获得正确的大小。如果您明确需要知道应用程序是否正在从全屏模式更改为全屏模式,也许您可以在FullScreenChanged事件处理程序中设置一个标志-例如,一个名为IsFullScreenChanging的bool属性-然后您可以在主窗口上的SizeChanged事件处理程序中检查此属性,在下一个FullScreenChanged事件之前,执行您需要执行的任何操作并重置标志

政务司司长:

xaml:


史蒂夫在上述正确回答中给出的简单答案是:

SizeChangedEventArgs.NewSize

(为了方便未来读者,添加一个单独的简明答案…

您指的是App.Current.Host.Content.Resized事件吗?如果是这样的话,它有一个不同的问题:它只在退出全屏模式时被触发,当应用程序进入全屏模式时,它不会被调用。(对我来说这闻起来像个bug,但我怀疑有人会插手解释为什么它是“设计的”。)我刚刚在Silverlight 4中发现了一个有趣的可重复的bug,当时我正在测试,试图解决这个导致浏览器崩溃的问题!是的,这使我的浏览器崩溃了-很好:)至于事件,我在我的应用程序的主Xaml.cs文件上尝试了SizeChanged事件,而不是app.Current.Host.Content.Resized事件。SizeChanged事件似乎在进入和离开全屏模式时都能可靠地触发。向主要答案添加代码以进行演示。像往常一样,我被计划中的简单答案打败了。我完全错过了SizeChangedEventArgs.NewSize属性!啊!这似乎与各种SizeChanged事件场景中的任何一种都能正常工作。。。
<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>
SizeChangedEventArgs.NewSize