У меня есть TreeView, по которому пользователь перемещается, чтобы выбрать элемент для отображения в сетке. Вкратце XAML выглядит так:
<local:TreeViewEx x:Name="theTreeView" ItemsSource="{Binding theData}">
<local:TreeViewEx.ItemTemplate>
<sdk:HierarchicalDataTemplate ItemsSource="{Binding theChildData}">
<TextBlock Text="{Binding Name}"/>
</sdk:HierarchicalDataTemplate>
</local:TreeViewEx.ItemTemplate>
</local:TreeViewEx>
<Grid DataContext="{Binding ElementName=theTreeView, Path=SelectedItem}">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding}" />
<TextBlock Text="{Binding Name}" /></StackPanel>
</Grid>
Когда пользователь щелкает древовидную структуру, имя типа модели представления отображается вместе со значением свойства Name. Идеально. Однако пользователь также может выполнить поиск в древовидной структуре (после Джоша Смита ), который задает свойство IsSelected элемента TreeViewItem. Как только это происходит, {Binding}
отображает TreeViewItemEx, а не имя типа ViewModel, и, конечно же, свойство Name не отображается.
Как это возможно, что selectedItem иногда будет ViewModel, а иногда будет TreeViewItem?