我的项目有一个有趣的问题。 我正在研究应用程序的方向,但我的问题是,当我更改屏幕方向纵向或横向时,我的视频元素消失了。 我正在为我的图像使用相同的代码,并且它可以正常工作。 所以,我不明白是什么问题。 有什么主意吗? 这是我的代码;

对于中介元素,此行返回null:

MediaElement mediaControl = RecurseChildren<MediaElement>(fwQuestions).Where(p => p.Name == "myVideoElement" + elementOrder).FirstOrDefault();

但是这一行相同的结构正确地返回了我的图像:

Image ImageController = RecurseChildren<Image>(fwQuestions).Where(p => p.Name == "QuestionImage" + elementOrder).FirstOrDefault();

我的代码是:

MediaElement myVideoElement = new MediaElement();
myVideoElement.Name = "myVideoElement" + currentQuestion;
myVideoElement.Width = (Window.Current.Bounds.Width * 0.2) - 10;
myVideoElement.Height = 300;
myVideoElement.Margin = new Thickness(10);
myVideoElement.Source = new Uri(AppConfiguration.TestVideoLink + questionVideoLink, UriKind.Absolute);
myVideoElement.AutoPlay = false;
myVideoElement.Margin = new Thickness(0, 10, 0, 10);
myVideoElement.AreTransportControlsEnabled = true;
myVideoElement.HorizontalAlignment = HorizontalAlignment.Center;
myVideoElement.Visibility = Visibility.Collapsed;
spMediaBody.Children.Add(myVideoElement);

DynamicGrid.Children.Add(spMediaBody);
pnlGeneralBody.Children.Add(DynamicGrid);
fwQuestions.Items.Add(pnlGeneralBody);

public static IEnumerable<T> RecurseChildren<T>(DependencyObject root) where T : UIElement
        {
            if (root is T)
            {
                yield return root as T;
            }

            if (root != null)
            {
                var count = VisualTreeHelper.GetChildrenCount(root);


                for (var idx = 0; idx < count; idx++)
                {
                    foreach (var child in RecurseChildren<T>(VisualTreeHelper.GetChild(root, idx)))
                    {
                        yield return child;
                    }
                }
            }
        }

private void Page_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            if (IsPageLoadComplete)
            {
                for (int i = 0; i < AppConfiguration.QuestionList.allques.Count; i++)
                {
                    string elementOrder = i.ToString();


                    Grid grdBody = RecurseChildren<Grid>(fwQuestions).Where(p => p.Name == "DynamicGrid" + elementOrder).FirstOrDefault();
                    MediaElement mediaControl = RecurseChildren<MediaElement>(fwQuestions).Where(p => p.Name == "myVideoElement" + elementOrder).FirstOrDefault();
                    if (mediaControl != null && mediaControl.Visibility == Visibility.Visible)
                    {
                        mediaControl.Width = (Window.Current.Bounds.Width * 0.2) - 10;
                        grdBody.ColumnDefinitions[0].Width = new GridLength((Window.Current.Bounds.Width * 0.2) - 5, GridUnitType.Pixel);
                        grdBody.ColumnDefinitions[1].Width = new GridLength((Window.Current.Bounds.Width * 0.8) - 5, GridUnitType.Pixel);
                    }
                    else
                    {
                        grdBody.ColumnDefinitions[0].Width = new GridLength((Window.Current.Bounds.Width * 0), GridUnitType.Pixel);
                        grdBody.ColumnDefinitions[1].Width = new GridLength((Window.Current.Bounds.Width * 1) - 10, GridUnitType.Pixel);
                    }

                    MediaElement AudioControl = RecurseChildren<MediaElement>(fwQuestions).Where(p => p.Name == "myAudioElement" + elementOrder).FirstOrDefault();
                    if (AudioControl != null && AudioControl.Visibility == Visibility.Visible)
                    {
                        AudioControl.Width = (Window.Current.Bounds.Width * 0.2) - 10;
                        grdBody.ColumnDefinitions[0].Width = new GridLength((Window.Current.Bounds.Width * 0.2) - 5, GridUnitType.Pixel);
                        grdBody.ColumnDefinitions[1].Width = new GridLength((Window.Current.Bounds.Width * 0.8) - 5, GridUnitType.Pixel);
                    }
                    else
                    {
                        grdBody.ColumnDefinitions[0].Width = new GridLength((Window.Current.Bounds.Width * 0), GridUnitType.Pixel);
                        grdBody.ColumnDefinitions[1].Width = new GridLength((Window.Current.Bounds.Width * 1) - 10, GridUnitType.Pixel);
                    }

                    Image ImageController = RecurseChildren<Image>(fwQuestions).Where(p => p.Name == "QuestionImage" + elementOrder).FirstOrDefault();
                    if (ImageController != null && ImageController.Visibility == Visibility.Visible)
                    {
                        ImageController.Width = (Window.Current.Bounds.Width * 0.2) - 10;
                        grdBody.ColumnDefinitions[0].Width = new GridLength((Window.Current.Bounds.Width * 0.2) - 5, GridUnitType.Pixel);
                        grdBody.ColumnDefinitions[1].Width = new GridLength((Window.Current.Bounds.Width * 0.8) - 5, GridUnitType.Pixel);
                    }
                    else
                    {
                        grdBody.ColumnDefinitions[0].Width = new GridLength((Window.Current.Bounds.Width * 0), GridUnitType.Pixel);
                        grdBody.ColumnDefinitions[1].Width = new GridLength((Window.Current.Bounds.Width * 1) - 10, GridUnitType.Pixel);
                    }
                }

            }
        }

  ask by SilverSharK translate from so

本文未有回复,本站智能推荐:

1回复

如何更改C#MediaElement的音频频率

我目前正在为Windows 8 Metro应用程序开发应用程序Dj。 而且我想知道如何允许更改“ MediaElement”的频率? 更改/更改参数的唯一属性是位置/体积/平衡。 但我希望可以更改频率(例如,以赫兹为单位),或手动设置运河。 非常感谢你
2回复

在初始屏幕中交换图像

我刚刚开始开发Windows应用程序。当应用程序以横向/纵向模式启动时,我想加载其他图像。 根据在横向模式,快照模式还是纵向模式下启动,初始屏幕中应该有不同的图像。 提前致谢。
1回复

在页面之间共享MediaElement

我想在Windows应用商店中播放歌曲。 事实是,我想在页面之间“共享” MediaElement ,因为导航到另一页面时播放声音不应停止。 我正在使用最新的Caliburn.Micro WinRT端口。 我解决此问题的第一种方法是将MediaElement放在DefaultView
4回复

Windows 8 Metro App中的Mediaelement

我有一个特定于我的应用程序的方案。 我正在为我的metro应用程序管理XML格式的音乐文件播放列表。 它保存的音乐文件就是这样的实际路径 d:\\玛雅\\ 1.MP3 我的XAML页面中有media元素,我正在设置它的Source。 但它没有播放媒体,而是给出了这样的错误
1回复

MediaElement导致可听见的点击

我正在开发一个游戏,一个基于XAML(不是DirectX)的Windows应用商店。 要播放声音效果(WAV文件),我使用MediaElement 。 对于每种声音效果,我都会这样初始化一个(或几个)MediaElement: ...然后像这样玩: 这工作,但有时也有烦人的咔
1回复

是否可以防止Windows 10 uwp中的锁定屏幕?

我正在为Windows 10开发一个应用程序,其中有幻灯片放映,我想阻止屏幕的自动锁定(关闭)..是否可能?
1回复

如何在Windows 8中重排窄屏幕的布局

我的布局包含红色面板和右面板中的一些控件,两者都包含一些包含一些项目的列表视图,因此可以自行滚动,如图片顶部所示。 我想在窄屏幕上更改布局(当用户调整我的应用程序大小时),因为同一方向的两个面板都不适合。 我想知道实现这一目标的好方法。 到目前为止,我已经尝试创建一个最初包含红色和
1回复

Windows Phone 8.1针对不同屏幕尺寸的不同文本大小

我正在开发Windows手机的Windows运行时应用程序,我需要根据屏幕尺寸缩放文本。 用于处理图像缩放我使用了3个文件夹(scale-100,scale-140和scale-240) 在应用程序中,我对不同类型的文本(标题,副标题......)有不同的风格 有没有办法根据屏
1回复

删除共享屏幕截图选项-DataTransferManager

在Windows 8.1应用中,使用调用共享UI时 默认情况下,我们可以选择共享当前应用的屏幕截图。 有没有办法删除此功能? 我从应用传递过来的要共享的数据是一个URL。 当出现共享窗格时,会向用户显示一个选项,也可以共享屏幕快照。 该场景在此链接中说明 我尝试将
1回复

Windows Store App,是否在屏幕上保留媒体传输控件?

我正在开发的Windows应用商店应用程序中使用MediaElement控件。 我将属性AreTransportControlsEnabled设置为true 但是,传输控件希望在一段时间后隐藏,而我的客户希望它们始终保持可见状态。 我该如何实现?