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>

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

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

问题:

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

提前致谢!

4

1 回答 1

10

而不是这样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>

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

于 2011-09-14T12:43:57.670 回答