wpfmahapps.metro

MahApps - How to disable automatic uppercase of default button


I have started to introduce MahApps.Metro (really awesome) in my WPF application and my favorite button is the default. The problem is that it puts all my text in uppercase and I don't want it.


Solution

  • You can override the default value by setting the property for all buttons in Window.Resources

        <controls:MetroWindow
        ...
        xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
            <Window.Resources>
                <ResourceDictionary>
                    <Style TargetType="{x:Type Button}" 
                           BasedOn="{StaticResource {x:Type Button}}">
                        <Setter Property="controls:ButtonHelper.PreserveTextCase" Value="True"/>
                    </Style>
                </ResourceDictionary>
            </Window.Resources>
            <Grid>
                 <!-- This would have normally made the text uppercase if not for the style override -->
                 <Button Content="Button"/>
            </Grid>
        </controls:MetroWindow>
    

    Omitting the x:Key setting causes the style to be applied to all buttons in this MetroWindow.