如何从代码后面访问数据模板中的控件?

嗨我在DataTemplate有一个MediaElement但我无法从后面的代码中访问它。

我发布下面的xaml代码:

                       

代码背后:

  private void lbivid_Selected(object sender, RoutedEventArgs e) { imagePreview.Visibility = Visibility.Hidden; string urlStr = (VidList.Source).ToString(); Uri temp = new Uri(UrlStr); videoPreview.Source = temp; } 

你能不能告诉我怎么办?

应该能够使用FrameworkTemplate.FindName方法访问您的控件…首先,从ListBoxItem之一获取ContentPresenter

 ContentPresenter contentPresenter = FindVisualChild(yourListBoxItem); 

然后从ContentPresenter获取DataTemplate

 DataTemplate yourDataTemplate = contentPresenter.ContentTemplate; 

然后从DataTemplate获取MediaElement

 MediaElement yourMediaElement = yourDataTemplate.FindName("vidList", contentPresenter) as MediaElement; if (yourMediaElement != null) { // Do something with yourMediaElement here } 

有关更多信息,请参阅MSDN上的FrameworkTemplate.FindName方法页面。

您的事件处理程序中有发件人,即ListBoxItem,MediaElement是ListBoxItem.Content

 var mediaElement = ((ListBoxItem)sender).Content as MediaElement; if (mediaElement != null) ...