如何在具有自定义ContentTemplate的WPF按钮上使用accesskey?

7

场景:

目前我有以下这段XAML代码:

<Button Content="_Cancel" IsCancel="True" Command="{Binding Path=CancelCommand}" Margin="5">
   <Button.ContentTemplate>
      <DataTemplate>
         <TextBlock Margin="10,0,10,0" />
      </DataTemplate>
   </Button.ContentTemplate>
</Button>

显然,在与TextBlock结合使用时,accesskey(即“c”键:_Cancel)不起作用。实际上,我认为TextBlock应该是ContentPresenter(如下),但这会导致我的Visual Studio 2010崩溃每一次。
<ContentPresenter Margin="10,0,10,0" RecognizesAccessKey="True" />

问题:

  • 如何在具有ContentTemplate的WPF按钮上使用accesskeys?

谢谢!

1个回答

10

使用 AccessText 代替 TextBlock,代码如下:

<Button Content="_Cancel" IsCancel="True" Command="{Binding Path=CancelCommand}" Margin="5">
   <Button.ContentTemplate>
      <DataTemplate>
         <AccessText Margin="10,0,10,0" Text="{Binding}"/>
      </DataTemplate>
   </Button.ContentTemplate>
</Button>

PS. ContentPresenter 应该在 ControlTemplate 中使用,以根据 DataTemplate 显示内容。如果在 DataTemplate 中使用它,会导致无限递归,因为 DataTemplate 会一遍又一遍地被调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接