Событие SelectedItemChanged и свойство SelectedItem TreeView не возникают, если TreeViewItem является элементом управления вводом, таким как Textbox. Приведенный ниже пример кода иллюстрирует проблему, помещая точку останова в событие TreeView SelectedItemChanged. Эта точка останова срабатывает, когда выбран «Заголовок строки», но не «Заголовок текстового поля».
Я предполагаю, что Textbox или RichTextbox (мое настоящее приложение) поглощает какое-то жизненно важное событие всплытия. Как я могу заставить TreeView SelectedItem вести себя для TextBox, как для элемента управления, такого как Label?
Примечание. Если я смогу решить эту проблему, мне потребуется двусторонняя привязка к SelectedItem, поскольку я использую MVVM и MEF. SelectedItem доступен только для чтения, и это проблема, которую я планирую решить с помощью (http://silverscratch.blogspot.com/2010/11/two-way-binding-on-treeviewselecteditem.html). Я думал, что эта ссылка может кому-то помочь.
XAML:
<TreeView SelectedItemChanged="TreeView_SelectedItemChanged">
<TreeViewItem>
<TreeViewItem.Header>
<TextBox>
Textbox Header
</TextBox>
</TreeViewItem.Header>
</TreeViewItem>
<TreeViewItem>
<TreeViewItem.Header>
String Header
</TreeViewItem.Header>
</TreeViewItem>
</TreeView>
Код позади:
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
// Breakpoint will fire when "String Header" Selected
// !!! Breakpoint does not fire when Textbox Selected
var newValue = e.NewValue;
var oldValue = e.OldValue;
}
Спасибо,