Search code examples
windows-phone-7xaml

How to choose my image according to the windows phone theme in xaml


In my xaml code I have this:

<Button  Grid.ColumnSpan="2" Grid.Row="3" Height="72"  Name="btnSend" Click="btnSend_Click">
      <Button.Background>
          <ImageBrush x:Name="imButton" ImageSource="/icons/appbar.feature.email.rest.png" Stretch="None"/>
      </Button.Background>
</Button>

For the imageSource I use a default icon from sdk, my problem is when I change de theme in light, the icon doesn't change and stay white. How to change this image when changing theme?


Solution

  • You can using transparent for solving this problem.

    First, create a style for this button:

    <phone:PhoneApplicationPage.Resources>
        <Style x:Key="IconButton" TargetType="Button">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
            <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
            <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
            <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
            <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/>
            <Setter Property="Padding" Value="10,3,10,5"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid Background="Transparent">
                            <VisualStateManager.VisualStateGroups>
    
                            </VisualStateManager.VisualStateGroups>
                            <Border x:Name="ButtonBackground" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}">
                                <Grid x:Name="ContentContainer" OpacityMask="{TemplateBinding Content}" Background="{TemplateBinding Foreground}"/>
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    

    after that use it as following:

    <Button Style="{StaticResource IconButton}" >
        <ImageBrush ImageSource="/icons/home.png">
    </Button>
    

    more info try find here