Silverlight - 将嵌入式自定义控件移出页面并使其全屏显示

时间:2010-10-22 13:35:38

标签: silverlight-4.0

我有一个Silverlight 4应用程序。作为应用程序的RootVisual的MainPage上有许多控件 - 其中一个是名为VideoPlayerView的用户控件。我想要的是当用户点击此控件上的全屏图标时,此控件将“弹出”页面并全屏显示(即此页面上的所有其他控件必须隐藏,并且只有VideoPlayerView控件会显示全屏)。

MainPage的行和列定义设置如下:

<Grid.ColumnDefinitions>
        <ColumnDefinition Width="143"/>
        <ColumnDefinition Width="4"/>
        <ColumnDefinition Width="81"/>
        <ColumnDefinition Width="27"/>
        <ColumnDefinition Width="624"/>
        <ColumnDefinition Width="125"/>
        <ColumnDefinition Width="10"/>
        <ColumnDefinition Width="10"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="15"/>
        <RowDefinition Height="40"/>
        <RowDefinition Height="10"/>
        <RowDefinition Height="21"/>
        <RowDefinition Height="10"/>
        <RowDefinition Height="199"/>
        <RowDefinition Height="220"/>
        <RowDefinition Height="21"/>
        <RowDefinition Height="160"/>
        <RowDefinition Height="26"/>
        <RowDefinition Height="45"/>
    </Grid.RowDefinitions>

当VideoPlayerView全屏显示时,我认为它需要转到0,0位置,那些定义应该设置为Auto?

我尝试从当前父级删除VideoPlayerView控件,清除MainPage.LayoutRoot的子集合并将videoplayerview添加到MainPage的Layoutroot中 - 但由于某种原因,VideoPlayerView仅显示在屏幕的前1/4处。 / p>

如果有人知道这样做的方法,请告诉我!

2 个答案:

答案 0 :(得分:0)

视频播放器仅填充屏幕四分之一的原因可能是因为它默认添加到网格的第一行和第一列。如果您希望它跨越多个行和列,则必须使用Grid.ColumnSpan = 8和Grid.RowSpan = 11,以便它填满整个屏幕。

此外,您不必严格删除子集合中的所有控件;将他们的知名度转变为Collapsed就足够了。

您可以使用视觉状态处理所有这些更改,然后您可以执行以下操作:

VisualStateManager.GoToState(this, "Normal", true);

VisualStateManager.GoToState(this, "Fullscreen", true);

答案 1 :(得分:0)

问题出在我们的XAML中 - 在视频播放器视图中设置了一个Clip属性,该属性在全屏模式下切断了视频。以全屏模式删除此属性解决了这个问题。