Very often, we need to execute some code in SelectedItemChanged
depending on the selected TreeViewItem
.
But SelectedItemChanged
is called twice. This is due to stealing focus from the main window, which is screwing something
up.
What we have to do to avoid this is simply delay the call to our code, i.e., MyFunction()
which we need to execute
in SelectedItemChanged
. Here's a workaround which delays the call to open the new window until the item selection
code finishes up:
lined:http://www.codeproject.com/Tips/208896/WPF-TreeView-SelectedItemChanged-called-twice
Hide Copy Code
private delegate void NoArgDelegate();
void Window1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
Dispatcher.BeginInvoke(DispatcherPriority.Background,
(NoArgDelegate)delegate { MyFunction(); });