你如何设计Silverlight ToggleSwitch的标签?

时间:2011-08-08 07:16:32

标签: wpf silverlight silverlight-toolkit

我想要更改Silverlight ToggleSwitch的前景色,但是当我在ExpressionBlend中打开对象时,我没有要编辑的对象项。

这是怎么做到的? (没有重建或使用反射器)?

2 个答案:

答案 0 :(得分:1)

我不太确定你在Blend中做错了什么,但是,如果你在这里查看ToggleSwitch的源代码,你可以看到ToggleSwitch的模板:

http://silverlight.codeplex.com/SourceControl/changeset/view/61620#1325059

忽略storyboards / VisualStateManager,控件具有以下标记:

<Grid x:Name="SwitchRoot" Background="Transparent" Height="95" Width="136">
    <Grid x:Name="SwitchTrack" Width="88">
    <Grid x:Name="SwitchBottom" Background="{TemplateBinding SwitchForeground}" Height="32">
        <Rectangle
        x:Name="SwitchBackground"
        Fill="{TemplateBinding Background}"
        Width="76"
        Height="20"
        HorizontalAlignment="Center"
        VerticalAlignment="Center">
        <Rectangle.RenderTransform>
            <TranslateTransform x:Name="BackgroundTranslation"/>
        </Rectangle.RenderTransform>
        </Rectangle>
        <Border BorderBrush="{StaticResource PhoneForegroundBrush}" BorderThickness="2">
        <Border BorderBrush="{StaticResource PhoneBackgroundBrush}" BorderThickness="4"/>
        </Border>
    </Grid>
    <Border
        x:Name="SwitchThumb"
        BorderBrush="{StaticResource PhoneBackgroundBrush}"
        BorderThickness="4,0"
        Margin="-4,0"
        Width="28"
        Height="36"
        HorizontalAlignment="Left">
        <Border.RenderTransform>
        <TranslateTransform x:Name="ThumbTranslation"/>
        </Border.RenderTransform>
        <Border
        x:Name="ThumbCenter"
        BorderBrush="{StaticResource PhoneForegroundBrush}"
        BorderThickness="2"
        Background="White"/>
    </Border>
    </Grid>
</Grid>

我建议在使用资源PhoneForegroundBrush时使用不同的颜色。

答案 1 :(得分:1)

我认为您需要为控件定义一个新的模板,然后根据需要更改您的样式。

您可以通过右键单击控件并选择“编辑模板”,然后创建编辑副本来执行此操作。这将为您创建一个可以更改的新样式。