TreeView
bir veri bağlı var ve ben SelectedItem
bağlamak istiyorum. This attached behavior, HierarchicalDataTemplate
olmadan mükemmel şekilde çalışır, ancak ilişikteki davranış, yalnızca bir yoldan (veriye UI) çalışır, çünkü artık e.NewValue
, TreeViewItem
değil TreeViewItem
'dir.Bir HierarchicalDataTemplate uygulanmış WPF TreeView SelectedItem Bağlama
budur ekli davranışından bir kod parçacığı:
private static void OnSelectedItemChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
var item = e.NewValue as TreeViewItem;
if (item != null)
{
item.SetValue(TreeViewItem.IsSelectedProperty, true);
}
}
Bu benim TreeView
tanımı şöyledir:
<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>
Ben ekli davranış yönteminde OnSelectedItemChanged
yılında TreeView
bir başvuru alabilirsiniz, belki de'u almak için cevapları this question'dan kullanabilirim ama nasıl gideceğimi bilmiyorum. Herkesin nasıl ve nasıl gideceğini biliyor mu?
nasıl GetVisualDescendant yöntemini kullanabilirsiniz? PresentationFramework'a referans ekledim, ancak yine de kullanamadım? Benim neyim eksik? – Lukas
GetVisualDescendant yöntemi, bir sürükle ve bırak yönteminde kullanılan bir uzantı yöntemidir [https://gong-wpf-dragdrop.googlecode.com/svn-history/r29/branches/jon/GongSolutions.Wpf.DragDrop /Utilities/VisualTreeExtensions.cs), yine de onu buldum. – Xtr
Bir çekicilik gibi çalışır. TreeView Kontrolünün zayıf mvvm özelliklerini genişletmek için çok iyi bir çözüm. –