我有一个带有这种绑定的TreeView控件:
<TreeView ItemsSource="{Binding}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type Trees:ItemTreeNode}"
ItemsSource="{Binding Path=Children}">
<StackPanel Orientation="Horizontal" Tag="">
<Image VerticalAlignment="Center" Margin="0,0,4,0" Source="{Binding Path=Icon}" />
<TextBlock VerticalAlignment="Center" Text="{Binding Path=Text}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
我有下一堂课:
public class ItemTreeNode : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<ItemTreeNode> Children { get; set; }
public ImageSource Icon {get; set;}
public string Text {get; set;}
public TreeViewItem VisualItem { get; set; }
}
是否可以将TreeViewItem引用绑定到VisualItem,因此我可以通过VisualItem通过寻址获取TreeViewItem?
答案 0 :(得分:0)
您可以尝试但是您会收到绑定错误,因为TreeView项目属于您的ItemsSourceCollection类型而不是TreeViewItem类型。
因此,设置ItemTreeNode公共属性以将SelectedItem绑定到。然后,在树的SelectedItemChanged事件中,使用ItemContainerGenerator.ContainerFromItem方法获取TreeViewItem:
var tvi = myTreeView.ItemContainerGenerator.ContainerFromItem(selectedItem) as TreeViewItem;