Я сделал этот действительно простой пример, это окно с TreeView и кнопкой.Когда вы нажимаете кнопку, вы видите выбранный элемент, но он не работает, свойство CurrentItem не обновляется при изменении выбора:
C #:
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Data;
namespace TreeViewSort
{
public partial class Window1
{
private ObservableCollection<string> _items;
public ListCollectionView SortedItems { get; private set; }
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
_items =new ObservableCollection<string>();
_items.Add("ZZ");
_items.Add("AA");
_items.Add("CA");
_items.Add("DA");
_items.Add("EA");
this.SortedItems = new ListCollectionView(_items);
this.DataContext = this;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(this.SortedItems.CurrentItem.ToString());
}
}
}
XAML:
<Window x:Class="TreeViewSort.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
<DockPanel>
<TreeView DockPanel.Dock="Top" Name="treeView1" ItemsSource="{Binding SortedItems, Mode=TwoWay}" MinHeight="200" />
<Button DockPanel.Dock="Bottom" Click="Button_Click">
Test
</Button>
</DockPanel>
</Window>
Документация MSDN гласит:
Если целью является ItemsControl, текущий элемент синхронизируется с выбранным элементом
Любое представление о том, почемуэто не работает?
Заранее спасибо.