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:
Thanks in advance!
The AccessText control in WPF converts a character preceded by an underscore to an Access Key. The Access Key is registered and therefore raises an event when pressed. This article demonstrates how to create and use an AccessText control in WPF using XAML and C#. Creating an AccessText.
When you press the key combination Alt+H, the command that is bound to the button will be executed. Show activity on this post. Thanks... but...
While holding the Alt key down, you can now press one of the Access Keys (e.g. N, O or S) to activate the specific button. It will react as if it was clicked with the mouse.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With