我有一个弹出窗口,它是一个 ChildWindow。在该弹出窗口中,我有一个 UserControl (MediaPreviewView),它有一个 MediaElement 和一些用于控制视频的按钮。我的要求是我需要一个全屏按钮,并在用户单击该按钮时全屏显示视频。
我正在使用 MVVM,所以我决定尝试使用 MVVM Light 中的消息传递。我正在向我的基本视图发送一条消息。在该视图的代码隐藏中,我显示了一个网格(隐藏在 XAML 的底部,具有高 zindex)。我的消息包含 MediaPreviewControl 并且我正在将 Grid.Children.Add( 设置为控件。我尝试了多种方法,并且可以使 ChildWindow 不可见,但按钮不起作用。似乎 ChildWindow仍然在按钮的顶部,即使宽度和高度为 0。是否有更好的使我的 MediaPreviewView 全屏显示的可行方法?
public class MediaPreviewFullScreenMessage
{
public MediaPreviewView PreviewView { get; set; }
public ChildWindow ContainerChildWindow { get; set; }
public bool ChangeToFullScreen { get; set; }
}
// Register for FullScreen media preview
Messenger.Default.Register<MediaPreviewFullScreenMessage>(this,
(fullScreenMessage) =>
{
this.fullScreenHolderGrid.Visibility = fullScreenMessage.ChangeToFullScreen ? Visibility.Visible : Visibility.Collapsed;
this.fullScreenHolderGrid.Children.Clear();
if (fullScreenMessage.ChangeToFullScreen)
{
// I've tried, Visibility, width and height = 0 on the fullScreenMessage.ContainerChildWindow, even a TranslateTransform
....
}
});