Mam powiązany z danymi TreeView
i chcę powiązać SelectedItem
. This attached behavior działa doskonale bez numeru HierarchicalDataTemplate
, ale z tym związane zachowanie działa tylko w jedną stronę (interfejs do danych), a nie inne, ponieważ teraz e.NewValue
jest MyViewModel
nie TreeViewItem
.Powiązanie elementu SelectedItem w pliku TreeView drzewa HF opartego na hierarchiiDataTemplate
Jest to fragment kodu z załączonym zachowań:
private static void OnSelectedItemChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
var item = e.NewValue as TreeViewItem;
if (item != null)
{
item.SetValue(TreeViewItem.IsSelectedProperty, true);
}
}
To mój TreeView
definicja:
<Window xmlns:interactivity="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity">
<TreeView ItemsSource="{Binding MyItems}" VirtualizingStackPanel.IsVirtualizing="True">
<interactivity:Interaction.Behaviors>
<behaviors:TreeViewSelectedItemBindingBehavior SelectedItem="{Binding SelectedItem, Mode=TwoWay}" />
</interactivity:Interaction.Behaviors>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:MyViewModel}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</Window>
Jeśli uda mi się odniesienie do TreeView
w załączonym sposobu zachowania OnSelectedItemChanged
, może mogę użyć odpowiedzi w this question, aby uzyskać TreeViewItem
, ale nie wiem jak się tam dostać. Czy ktoś wie, jak i czy jest to właściwa droga?
jak mogę użyć metody GetVisualDescendant? Dodałem odwołanie do PresentationFramework, ale nadal nie mogłem go użyć? Czego mi brakuje? – Lukas
Metoda GetVisualDescendant jest metodą rozszerzenia używaną w utilities przeciągania i upuszczania [implementacja] (https://gong-wpf-dragdrop.googlecode.com/svn-history/r29/branches/jon/GongSolutions.Wpf.DragDrop /Utilities/VisualTreeExtensions.cs), to i tak znalazłem. – Xtr
Działa jak urok. Bardzo dobre rozwiązanie rozszerzające słabe możliwości mVvm kontrolki TreeView. –