내 WPF C# 프로젝트에서 TreeView를 만들었습니다. 각 TreeViewItem에는 항목이 포커스를 잃을 때 발생해야하는 LostFocus 이벤트가 있습니다. 사용자가 특정 TreeViewItem의 헤더를 변경하려고 할 때 클릭해야하는 버튼도 생성했습니다. 사용자는 TreeView에서 선택한 후 단추를 클릭하고 TextBox가 TreeViewItem 헤더를 대체하는 것처럼 보입니다. 사용자가 TextBox를 클릭했지만 다른 TreeViewItem을 클릭하지 않으면 LostFocus 이벤트가 발생하지 않습니다. 그렇지 않으면 사용자가 TextBox를 클릭하고 포커스를 변경하면 해당 텍스트가 올려집니다. textBox.Focus()
및 Keyboard.Focus(textBox)
도 사용했지만 작동하지 않습니다. 어떻게 해결할 수 있습니까? 또 다른 SO 여기LostFocus가 TreeViewItem에 대해 생성되지 않았습니다.
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) =>
{...}
}
강력 적절한 뷰 모델을 작성하고 같은 당신이 윈폼과 같은 절차 적 접근 방식보다는 일을하려고하든위한 것입니다 DataTemplates으로 적절한 데이터 바인딩과 WPF의 개념을 사용하는 것이 좋습니다. –
Francesco는 * 특별한 * * 너무 좋아, 불행히도 .. – UIlrvnd