В моем TreeView HierarchicalDataTemplate я хочу позволить пользователю иметь возможность переименовывать элементы дерева. Для этого я реализовал TextBox, который является ReadOnly. Когда пользователь щелкает правой кнопкой мыши элемент и выбирает «Переименовать», для свойства ReadOnly в TextBox этого элемента должно быть установлено значение False, что позволяет пользователю переименовывать элемент.
Проблема, с которой я сталкиваюсь, заключается в том, что Visual Studio выдает ошибку при нажатии на пункт «Переименовать» MenuItem. Это ошибка, которую я получаю:
"Имя txt не может быть найдено в области имен System.Windows.Controls.MenuItem."
Мой вопрос: как я могу решить эту проблему и достичь своей цели? Может быть, я должен идти об этом совершенно по-другому ???
Спасибо, любая помощь очень ценится!
Мой код:
<HierarchicalDataTemplate DataType="{x:Type local:ResourceItemData}" ItemsSource="{Binding AnimationDataCollection}">
<TextBox x:Name="txt" Text="{Binding ResourceName}" FontSize="12" BorderThickness="0" IsReadOnly="True">
<TextBox.Style>
<Style>
<Setter Property="TextBox.Background" Value="Transparent"/>
<Style.Triggers>
<Trigger Property="TextBox.IsFocused" Value="True">
<Setter Property="TreeViewItem.IsSelected" Value="True" />
<Setter Property="TextBox.Background" Value="AliceBlue" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Add Animation" Click="AddAnimationMenuItem_Click"/>
<MenuItem Header="Remove Resource" Click="RemoveResourceMenuItem_Click"/>
<MenuItem Header="Rename">
<MenuItem.Triggers>
<EventTrigger RoutedEvent="MenuItem.Click">
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetName="txt" Storyboard.TargetProperty="IsReadOnly">
<DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="True" />
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</MenuItem.Triggers>
</MenuItem>
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
</HierarchicalDataTemplate>