I ran into the issue during an event I have the child element but I needed a reference to the parent element. APIs exist to really ease this process. Using the VisualTreeHelper I was able to walk the tree with this routine which I discovered in the stackoverflow forum.
XAML:
<DataTemplate x:Key="SimpleItemTemplate">
<Button Click="Button_Click">In DataTemplate</Button>
</DataTemplate>
Code behind:private void Button_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
ListBox lb = FindAncestor<ListBox>(btn);
Debug.WriteLine(lb);
}
public static T FindAncestor<T>(DependencyObject from)
where T : class
{
if (from == null)
{
return null;
}
T candidate = from as T;
if (candidate != null)
{
return candidate;
}
return FindAncestor<T>(VisualTreeHelper.GetParent(from));
}
source:
http://stackoverflow.com/questions/2633109/listboxitem-parent-returns-nothing-unable-to-get-it-thru-visualtreehelper-getpa
http://msdn.microsoft.com/en-us/library/system.windows.media.visualtreehelper.getparent(v=vs.95).aspx
No comments:
Post a Comment