tags:

views:

2757

answers:

4

I am setting the .Content value of a Label to a string that contains underscores; the first underscore is being interpreted as an accelerator key.

Without changing the underlying string (by replacing all _ with __), is there a way to disable the accelerator for Labels?

+5  A: 

Is there a reason you want to use a Label as opposed to a TextBlock?

Daniel Jennings
Yes - `Label` does a lot more than handle the accelerators. Also applies to other controls (e.g. `GroupBox`) that can't be replaced by a `TextBlock`.
GraemeF
+8  A: 

You could override the RecognizesAccessKey property of the ContentPresenter that is in the default template for the label. For example:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
  <Grid>
    <Grid.Resources>
      <Style x:Key="{x:Type Label}" TargetType="Label">
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="Label">
              <Border>
                <ContentPresenter
                  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                  RecognizesAccessKey="False" />
              </Border>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </Grid.Resources>
    <Label>_This is a test</Label>
  </Grid>
</Page>
dpp
Just tried this, doesn't work, actually. Perhaps it does remove access-key binding, but it doesn't prevent the underscore from being removed.
xanadont
Just copied the code into Kaxaml and worked. Did you try as is or change it at all?
dpp
Works on my machine, too.
Simpzon
Works for me, but changes the way a label looks :(
Anders Rune Jensen
A: 

Although Label is heavier, it does support nice alignment features which TextBlock does not. For instance, TextBlock does not have an analog to VerticalContentAlignment.

micahtan
+2  A: 

If you use a TextBlock as the Content of the Label, its Text will not absorb underscores.

yota
I just used this approach in my app and it worked like a champ.
RQDQ