C# 如何将WPF按钮上的accesskey与自定义ContentTemplate一起使用?

C# 如何将WPF按钮上的accesskey与自定义ContentTemplate一起使用?,c#,.net,wpf,xaml,access-keys,C#,.net,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&

场景:

目前我有以下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>

显然,accesskey(“c”键:_Cancel)不能与TextBlock组合使用。实际上,我认为TextBlock应该是ContentPresenter(如下所示),但这每次都会使我的VisualStudio2010实例崩溃

<ContentPresenter Margin="10,0,10,0" RecognizesAccessKey="True" />

问题:

  • 在带有ContentTemplate的WPF按钮上使用AccessKey的最佳解决方案是什么

提前谢谢

使用
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>

另外,
ContentPresenter
应在
ControlTemplate
中使用,以根据
DataTemplate
显示内容。如果在
DataTemplate
中使用它,则会在反复调用
DataTemplate
时导致无限递归