TreeView
ノードのテキストが編集可能なテキストボックスに変更されるように、各アイテムのダブルクリックイベントをバインドするネストがあります。次に、lostFocusイベントハンドラーを使用してテキストボックスを削除し、テキストを復元します。
void treeViewItemWithMenu_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (selected == e.Source)
{
TextBox tb = new TextBox();
tb.Text = this.Header.ToString();
tb.Focus();
tb.LostFocus += new RoutedEventHandler(tb_LostFocus);
this.Header = tb;
var a = e.OriginalSource;
e.Handled = true;
}
}
void tb_LostFocus(object sender, RoutedEventArgs e)
{
this.Header = ((TextBox)(this.Header)).Text;
}
残念ながら、lostFocusイベントが正しく機能しているようには見えません。テキストボックスの外側をクリックしても、まったく起動しません。別のノードをダブルクリックすることもできます。最初のテキストボックスにフォーカスがあるように見えますが、編集モードになります(つまり、テキストボックスになります)。2つのテキストボックス間を行き来し始めるまで、フォーカスの喪失は発生しません。
プロジェクトを.net3.5に設定してvs2010rcを使用しています。