1
我的WPF應用程序需要根據一天中的時間,日間模式和夜間模式有兩種不同的配色方案。我試圖修改由第三方WPF控件使用的模板,以便它可以使用不同的配色方案。WPF視覺狀態和改變顏色
在考慮中的控制使用視覺狀態來定義過渡選自於未選定:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Calendar:CalendarButton}">
<Grid x:Name="LayoutRoot" Background="Transparent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="SelectionStates">
<VisualState x:Name="Unselected"/>
<VisualState x:Name="Selected"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"/>
<Chromes:ButtonChrome x:Name="SelectionChrome" CornerRadius="1" Margin="2" RenderNormal="False" RenderSelected="{TemplateBinding IsSelected}" RenderFocused="{TemplateBinding IsFocused}" RenderHighlighted="{TemplateBinding IsMouseOver}" />
<Border x:Name="TodayVisual" BorderThickness="1" CornerRadius="2" Margin="1" Visibility="Collapsed">
<Border.BorderBrush>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF282828"/>
<GradientStop Color="#FF5F5F5F" Offset="1"/>
</LinearGradientBrush>
</Border.BorderBrush>
</Border>
<ContentPresenter x:Name="Content" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
我需要改變ButtonChrome
控制的Background
,BorderBrush
,和Foreground
屬性時的可視狀態爲「選定的」。我該怎麼做呢?
我已經解決了這個問題,但事實證明,我不需要對'ButtonChrome'控件做任何事情。我需要修改的控件是'ContentPresenter',我得到了這個工作。基本上,@CodeWarrior是對的。 – 2013-04-23 16:40:17