如何从代码后面访问数据模板中的控件?
嗨我在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) ...