それぞれのTreeViewItems Selectedイベントが発生したときに新しいウィンドウを起動するTreeViewがあります。親ツリービュー項目ゴースト選択イベント!
<Window x:Class="WpfApplication1.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">
<Grid>
<TreeView Name="treeView1">
<TreeViewItem Header="Root">
<TreeViewItem Header="Parent" Selected="ParentTreeViewItem_Selected">
<TreeViewItem Header="Child" Selected="TreeViewItem_Selected" ></TreeViewItem>
</TreeViewItem>
</TreeViewItem>
</TreeView>
</Grid>
</Window>
namespace WpfApplication1
{パブリック部分クラスWindow1の背後にあるコード:ウィンドウ {パブリックWindow1の(){ のInitializeComponent(); }
private void TreeViewItem_Selected(object sender, RoutedEventArgs e)
{
Window w = new Window();
w.Show();
e.Handled = true;
}
private void ParentTreeViewItem_Selected(object sender, RoutedEventArgs e)
{
}
}
}
私は予想通り、新しいウィンドウが起動された子ノードをクリックしてください。しかし、後で即座にその親parent Selected eventが新しいウィンドウからフォーカスを盗んだり、親ノードを現在の選択としてマークしたりします。
新しく起動したウィンドウにフォーカスがあり、クリックされたノードがユーザーの選択に灰色に変わることが予想されました。なぜこのようなことが起きるのか、どうやってそれを防ぐことができるのか、誰にも分かりますか?
おかげで、
Brette
ViewModelのIsSelectedプロパティ設定ツールから起動するときに同じ問題が発生しました。そこからDispatcherを使用することはできないので、私はこのソリューションを使用しています:http://stackoverflow.com/a/5971732/383129 – JoanComasFdz