【发布时间】:2011-06-29 19:15:10
【问题描述】:
我已经像这样设置了ListBox:
<ListBox ItemsSource="{Binding Logs, Mode=OneWay}" x:Name="logListView">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=.}">
<TextBlock.InputBindings>
<KeyBinding Key="C"
Modifiers="Ctrl"
Command="Copy"/>
</TextBlock.InputBindings>
<TextBlock.CommandBindings>
<CommandBinding Command="Copy"
Executed="KeyCopyLog_Executed"
CanExecute="CopyLog_CanExecute"/>
</TextBlock.CommandBindings>
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Command="Copy">
<MenuItem.CommandBindings>
<CommandBinding Command="Copy"
Executed="MenuCopyLog_Executed"
CanExecute="CopyLog_CanExecute"/>
</MenuItem.CommandBindings>
</MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如您所见,在模板中,每个TextBlock 都有一个上下文菜单,允许用户复制文本。这行得通。
在TextBlock 中还有一个KeyBinding 用于ctrl+c 和一个CommandBinding 用于复制。当我按下 ctrl+c 时,方法 KeyCopyLog_Executed 没有被执行。我已经用调试器检查过了。
我应该如何将密钥绑定到TextBlock?
【问题讨论】: