在我的TreeView HierarchicalDataTemplate中,我想让用户能够重命名treeviewitems。为此,我实现了一个ReadOnly的TextBox。当用户右键单击某个项目并选择“重命名”时,该项目的TextBox中的属性ReadOnly应设置为False,允许用户重命名该项目。
我遇到的问题是当我点击'重命名'MenuItem时,Visual Studio会出错。这是我得到的错误:
“'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>
答案 0 :(得分:0)
尝试使用Storyboard.Target设置x:Reference。您还应该查看Blend SDK附带的Interactivity库。它可以帮助您在不使用动画的情况下更清晰地更改属性。