13
我想在我的樹形視圖中獲取任何展開樹形視圖事件的事件。樹形視圖中任何項目的OnExpanded事件
原因是這樣,與原始問題有點無關: 我正在創建一個與xml文件樹緊密相關的樹,但我允許在xml中包含一個元素,因此樹可以跨越多個文件。我想在擴展時在我的樹視圖中設置treeviewitems的itemssource屬性。
我想在我的樹形視圖中獲取任何展開樹形視圖事件的事件。樹形視圖中任何項目的OnExpanded事件
原因是這樣,與原始問題有點無關: 我正在創建一個與xml文件樹緊密相關的樹,但我允許在xml中包含一個元素,因此樹可以跨越多個文件。我想在擴展時在我的樹視圖中設置treeviewitems的itemssource屬性。
可以使用TreeViewItem.Expanded
事件作爲附加事件:
<TreeView TreeViewItem.Expanded="TreeViewItem_Expanded"
ItemsSource="{Binding}">
...
</TreeView/>
在代碼隱藏,您可以識別發起使用OriginalSource
財產的事件TreeViewItem
:
private void TreeViewItem_Expanded(object sender, RoutedEventArgs e)
{
TreeViewItem tvi = e.OriginalSource as TreeViewItem;
if (tvi != null)
{
MessageBox.Show(string.Format("TreeNode '{0}' was expanded", tvi.Header));
}
}
如果你的意思是可視化的後代,你可以通過TreeViewItem的ItemsContainerGenerator獲取它們 – 2009-09-07 22:42:42
這非常有幫助,謝謝,我希望有一個獎勵給你。最後總結:我想要的視覺後代在擴展事件期間還沒有創建。在擴展事件中,我保存了OriginalSource,然後在一個綁定的任意轉換器方法中,我得到了ItemContainerGenerator.ContainerFromIndex(i)的可視後代並更新了ItemsSource。 – 2009-09-08 00:13:16