我想要更改Silverlight ToggleSwitch的前景色,但是当我在ExpressionBlend中打开对象时,我没有要编辑的对象项。
这是怎么做到的? (没有重建或使用反射器)?
答案 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)
我认为您需要为控件定义一个新的模板,然后根据需要更改您的样式。
您可以通过右键单击控件并选择“编辑模板”,然后创建编辑副本来执行此操作。这将为您创建一个可以更改的新样式。