私の WPF C# プロジェクトでは、TreeView を作成しました。各 TreeViewItem には、項目がフォーカスを失ったときに発生する必要がある LostFocus イベントがあります。ユーザーが特定の TreeViewItem のヘッダーを変更したいときにクリックする必要があるボタンも作成しました。ユーザーは、TreeView で選択した後、ボタンをクリックすると、TreeViewItem ヘッダーを置き換える TextBox が表示されます。ユーザーが TextBox をクリックせずに別の TreeViewItem をクリックした場合、LostFocus イベントは発生しません。それ以外の場合、ユーザーが TextBox をクリックしてからフォーカスを変更すると、発生します。textBox.Focus()
and も使用 しましKeyboard.Focus(textBox)
たが、機能しません。どうすればこれを修正できますか?
明確にするために、投稿を作成する前に、別の SO answer hereを読みました
ここにスニペットコードがあります
private void RenameButton_Click(object sender, RoutedEventArgs e)
{
TreeViewItem twItemSelected = (TreeViewItem)this.Treeview_PropertyDefinition.SelectedItem;
var textBox = new TextBox()
{
Text = (String)twItemSelected.Header,
};
textBox.Focus();
Keyboard.Focus(textBox);
if (textBox.IsFocused)
MessageBox.Show("focused");
twItemSelected.Header = textBox;
//check which property is currently selected
String parentName = ((TreeViewItem)twItemSelected.Parent).Name;
((TreeViewItem)twItemSelected.Parent).Parent).Name;
//get values from file
//show page based on parent value
switch (parentName)
{
case "RectangleBar_TreeviewItem":
textBox.LostFocus += (o, ev) =>
{...}
}