开发者

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

开发者 https://www.devze.com 2023-04-04 15:26 出处:网络
Scenario: Currently I have this XAML code: <Button Content=\"_Cancel\" IsCancel=\"True\" Command=\"{Binding Path=CancelCommand}\" Margin=\"5\">

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 ac开发者_StackOverflow社区cesskey (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!


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消