1

在我的 xaml 代码中,我有这个:

<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>

对于 imageSource,我使用了来自 sdk 的默认图标,我的问题是当我在灯光下更改主题时,图标不会改变并保持白色。更改主题时如何更改此图像?

4

3 回答 3

1

您可以使用透明来解决此问题。

首先,为这个按钮创建一个样式:

<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>

之后使用它如下:

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

更多信息尝试在这里找到

于 2012-05-16T08:56:06.490 回答
0

按钮图像颜色的自动转换仅在 AppBar 上完成。对于所有其他图像,您必须自己进行测试。
像这样的东西会起作用:

var isLightTheme = (Visibility)Application.Current.Resources["PhoneLightThemeVisibility"] == Visibility.Visible;

然后,您可以使用该布尔值来确定要显示的图像。可能建议为每个图像的不同版本使用标准命名约定,这样可以更轻松地使用转换器。

于 2012-05-16T08:17:27.737 回答
-1

您只需要使用“白色”图标。您可以在 Microsoft SDKs\Windows Phone\v7.1\Icons\dark 中找到它

于 2012-05-16T06:42:37.083 回答