How to use an accesskey on a WPF Button with a custom ContentTemplate?

懵懂的女人 提交于 2019-11-27 06:21:06

问题


Scenario:

Currently I have this XAML code:

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

Obviously the accesskey (the 'c' key: _Cancel) doesn't work in combination with the TextBlock. I actually think the TextBlock should be a ContentPresenter (below), but this crashes my Visual Studio 2010 instance every time.

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

Question:

  • What's the best solution to use accesskeys on a WPF Button with a ContentTemplate?

Thanks in advance!


回答1:


Instead of TextBlock use AccessText thus:

<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 should be used inside a ControlTemplate to display content according to a DataTemplate. If you use it within a DataTemplate it causes infinite recursion as the DataTemplate is invoked over and over again.



来源:https://stackoverflow.com/questions/7416303/how-to-use-an-accesskey-on-a-wpf-button-with-a-custom-contenttemplate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!