J'ai deux arbres:Pourquoi e.Source dépend de la méthode de peuplement TreeView?
- fooTree - composée d'éléments,
- barTree - construit par
Les deux arbres ont MouseRightButtonDown événement, mais le type de e.Source diffère:
- fooTree - System.Windows.Controls.TreeViewItem
- barTree - Système.Windows.Controls .TreeView
Pourquoi la source électronique est-elle différente? Aussi, comment puis-je obtenir l'élément cliqué pour le barTree?
Markup:
<TreeView Name="fooTree" MouseRightButtonDown="fooTree_MouseDown">
<TreeViewItem Header="foo"></TreeViewItem>
<TreeViewItem Header="foo"></TreeViewItem>
</TreeView>
<TreeView Name="barTree" MouseRightButtonDown="barTree_MouseDown" ItemsSource="{Binding BarItems}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate>
<TextBlock Text="{Binding}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
code:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
this.DataContext = this;
}
public string[] BarItems
{
get { return new string[] { "bar", "bar" }; }
}
private void barTree_MouseDown(object sender, MouseButtonEventArgs e)
{
}
private void fooTree_MouseDown(object sender, MouseButtonEventArgs e)
{
}
}
+1 pour une excellente solution. –