【问题标题】:Remove mediaelement properly from grid从网格中正确删除媒体元素
【发布时间】:2012-03-18 12:54:22
【问题描述】:

我是 WPF 新手。在我的应用程序中,我在一列网格 (gridTitle) 中显示视频标题列表,在另一列中我添加了一个包含媒体的网格 (gridVideo)元素(在用户控件内)并播放在 gridTitle 上选择的视频。当用户从 gridTitle 中选择不同的标题时,我删除媒体元素(用户控件)如下

if(gridVideo.Children.Count > 0)
{
    MediaControl temp = null;
    foreach (UIElement element in gridVideo.Children)
    {
        if (element.GetType() == typeof(MediaControl))
            temp = (MediaControl)element;    
    }

    if(temp!=null)
        gridVideo.Children.Remove(temp);

    // gridMedia.Children.RemoveAt(0);
}

上面的方法删除了包含媒体元素的用户控件。在这里我想问一下是否需要停止/关闭当前正在播放的视频,或者它将由 WPF 自动处理。我主要担心的是媒体元素是否不会在后台下载缓冲区中的数据?

请提出建议。

【问题讨论】:

    标签: wpf grid element media


    【解决方案1】:

    是否绝对有必要用 MediaElement 替换该控件?您可以根据所选标题重置其 MediaElement 的 Source 属性。这可以使用数据绑定来完成:显示的标题可以是包含 Title(用于在列表中显示)和 Uri(用于设置 MediaElement.Source 属性)的类的实例。然后MediaElement.Source 绑定到项目容器的SelectedItem.Uri

    【讨论】:

    • 有一个附加到视频的信息列表。所以我创建了一个包含媒体元素和其他控件的用户控件。所以媒体元素显示视频和其他控件显示相关信息,如标题、描述、评级、分辨率等,有 100 + 视频,每个都包含这些信息。因此,当用户单击任何项​​目时,我会删除以前的用户控件并在网格中添加新的用户控件
    • 所有信息都可以是数据绑定的,仍然不需要更换用户控件本身。事件,如果它必须绑定到不同的类。只需将 mediaelement 与显示数据所需的其他元素一起放在该用户控件中即可。将选定的实例传递到用户控件的 DataContext 并在那里绑定所有内容
    猜你喜欢
    • 2017-05-20
    • 2018-12-18
    • 1970-01-01
    • 2017-07-08
    • 2011-10-23
    • 2019-06-11
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多