2012-03-17 2 views
1

WPF를 처음 사용합니다. 내 응용 프로그램에서 비디오 제목 목록을 격자의 한 열 (gridTitle)에 표시하고 다른 열에는 (usercontrol 내에서) 미디어 요소가 들어있는 하나 이상의 격자 (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); 
} 

미디어 요소를 포함하는 사용자 제어를 제거는 다음과 같이, I 미디어 요소 (UserControl을)를 제거한다. 여기서 나는 현재 재생중인 비디오를 멈추거나 닫을 필요가 있는지 또는 WPF가 자동으로 처리 할 것인지 묻고 싶습니다. 내 주요 관심사는 미디어 요소가 백그라운드에서 버퍼에 데이터를 다운로드하지 여부입니다?

좋습니다.

답변

1

해당 컨트롤을 MediaElement로 바꾸는 것이 반드시 필요한가요? 선택한 제목에 따라 MediaElement의 Source 속성을 재설정 할 수 있습니다. 이는 데이터 바인딩을 사용하여 수행 할 수 있습니다. 표시된 제목은 제목 (목록으로 표시하기 위해)과 Uri (MediaElement.Source 속성을 설정하는)를 포함하는 클래스의 인스턴스가 될 수 있습니다. 그런 다음 MediaElement.Source은 아이템 컨테이너의 SelectedItem.Uri에 바인딩됩니다.

+0

동영상에 첨부 된 정보 목록이 있습니다. 그래서 미디어 요소와 다른 컨트롤을 포함하는 사용자 정의 컨트롤을 만듭니다. 따라서 미디어 요소는 비디오 및 기타 컨트롤을 표시하여 제목, 설명, 등급, 해상도 등과 같은 관련 정보를 표시하며 100 개 이상의 비디오가 있고 각 정보에는이 정보가 들어 있습니다. 사용자가 항목을 클릭하면 이전 사용자 컨트롤이 제거되고 그리드에 새 사용자 컨트롤 하나가 추가됩니다. – Rupesh

+0

모든 정보가 데이터 바인딩 될 수 있으며 사용자 컨트롤 자체를 바꿀 필요가 없습니다. 이벤트가 다른 클래스에 바인드되어야하는 경우. 해당 사용자 정의 컨트롤에 미디어 요소를 배치하고 데이터를 표시하는 데 필요한 다른 요소를 배치하면됩니다. 선택한 인스턴스를 사용자 정의 컨트롤의 DataContext로 전달하고 거기에있는 모든 것을 묶습니다. – EvAlex

관련 문제