我想在两种情况下启用TreeView
中的项目编辑:
Edit
ContextMenu
TreeView
按钮时
F2
时。我的TreeView
的xaml:
<TreeView ItemsSource="{Binding FooColl}" >
<TreeView.Resources>
<DiscreteObjectKeyFrame x:Key="proxy" Value="{Binding}"/>
<HierarchicalDataTemplate DataType="{x:Type treeViewModel:NodeViewModel}"
ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Image Source="treeNode.png" />
<TextBlock Text="{Binding FooValue}">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="Edit"/>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
我的第一个想法是在TextBox
中使用TextBlock
而不是HierarchicalDataTemplate
。但是,TextBox
启用了MouseClick
的修改模式。因此,这不是我想要的。
关于我该怎么做的任何想法?
答案 0 :(得分:1)
您可以使用IsReadOnly属性:
<TextBlock Text="{Binding FooValue}" IsReadOnly="{Binding ImReadOnly}">
要处理F2按键,您可以试试这个:
public partial class MyView : UserControl
{
public MyView()
{
InitializeComponent();
this.KeyDown += new KeyEventHandler(KeyDownEvent);
}
private void KeyDownEvent(object sender, KeyEventArgs e)
{
try
{
switch (e.Key)
{
case Key.F2:
var vm = this.DataContext as YourViewModel;
vm.YourCommand.Execute(null);
break;
}
}
catch (Exception ex)
{
//...
}
}
}