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

Her*_*des 5 .net c# wpf xaml access-keys

场景:

目前我有这个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>
Run Code Online (Sandbox Code Playgroud)

显然,accesskey('c'键:_Cancel)不能与TextBlock结合使用.我实际上认为TextBlock应该是ContentPresenter(下面),但每次都会使我的Visual Studio 2010实例崩溃.

<ContentPresenter Margin="10,0,10,0" RecognizesAccessKey="True" />
Run Code Online (Sandbox Code Playgroud)

题:

  • 使用ContentTemplate在WPF按钮上使用accesskeys的最佳解决方案是什么?

提前致谢!

Avi*_* P. 8

而不是这样TextBlock使用AccessText:

<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>
Run Code Online (Sandbox Code Playgroud)

PS.ContentPresenter应该在a里面ControlTemplate用来显示内容DataTemplate.如果你在一个内部使用DataTemplate它会导致无限递归,因为DataTemplate它被反复调用.