0
在我的TreeView HierarchicalDataTemplate中,我想讓用戶能夠重命名treeviewitems。對此,我實現了一個ReadOnly的TextBox。當用戶右鍵單擊一個項目並選擇「重命名」時,該項目的文本框中的屬性ReadOnly應設置爲False,從而允許用戶重命名該項目。當MenuItem被點擊時,WPF事件觸發器無法找到SourceName
我遇到的問題是,當我點擊'重命名'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>
工作!謝謝一堆!我一定會檢查一下Interactivity庫。我一直渴望在Xaml中設置更清晰的屬性。 – Vakey