2012-03-17 65 views
1

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

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自动处理。我主要关心的是媒体元素是否不在后台下载缓冲区中的数据?

请建议。

回答

1

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

+0

有一个附加到视频的信息列表。所以我创建了一个包含媒体元素和其他控件的用户控件。所以媒体元素显示视频和其他控件显示标题,描述,评级,分辨率等相关信息,并有100 +视频,每个包含此信息。所以当用户点击任何项目,然后我删除以前的用户控制,并添加新的用户控制一个网格 – Rupesh 2012-03-21 16:53:13

+0

所有的信息可能是数据绑定,仍然没有必要更换用户控制本身。事件是否必须绑定到不同的类。只需将mediaelement放置在该用户控件中,并将其与显示数据所需的其他元素一起放置即可。将选定的实例传递给用户控件的DataContext并将所有内容绑定到那里 – EvAlex 2012-03-22 05:30:19