我在UWP应用程序中添加了RatingControl
。如何设置实心和空星星的颜色?这是我添加的代码:
<RatingControl x:Name="MyRating" Value="3.5" Width="300" Height="200" />
答案 0 :(得分:3)
如果您检查RatingControl
的默认样式,则可以找到以下VisualStateGroup
:
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Target="ForegroundContentPresenter.Foreground"
Value="{ThemeResource RatingControlDisabledSelectedForeground}"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Placeholder">
<VisualState.Setters>
<Setter Target="ForegroundContentPresenter.Foreground"
Value="{ThemeResource RatingControlPlaceholderForeground}"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="PointerOverPlaceholder">
<VisualState.Setters>
<Setter Target="ForegroundContentPresenter.Foreground"
Value="{ThemeResource RatingControlPointerOverPlaceholderForeground}"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="PointerOverUnselected">
<VisualState.Setters>
<Setter Target="ForegroundContentPresenter.Foreground"
Value="{ThemeResource RatingControlPointerOverUnselectedForeground}"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Set">
<VisualState.Setters>
<Setter Target="ForegroundContentPresenter.Foreground"
Value="{ThemeResource RatingControlSelectedForeground}"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="PointerOverSet">
<VisualState.Setters>
<Setter Target="ForegroundContentPresenter.Foreground"
Value="{ThemeResource RatingControlSelectedForeground}"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
如您所见,颜色基于RatingControlSelectedForeground
,RatingControlPointerOverUnselectedForeground
等资源。
您可以将这些内容的自定义替代作为单独的资源提供,也可以编辑控件的样式。
注意-空星星颜色
尽管它不是模板的一部分,但是您可以通过修改RatingControlUnselectedForeground
资源来自定义空星星的颜色。
您可以在单个分级控制级别,任何父级或应用程序级别覆盖资源。
在RatingControl
级别上的覆盖将仅应用于单个RatingControl
:
<RatingControl x:Name="MyRating" Value="3.5" Width="300" Height="200" >
<RatingControl.Resources>
<SolidColorBrush x:Key="RatingControlSelectedForeground" Color="Red" />
<SolidColorBrush Color="Blue" x:Key="RatingControlUnselectedForeground" />
</RatingControl.Resources>
</RatingControl>
您可以在任何父级上进行覆盖,例如在页面上
<Page.Resources>
<SolidColorBrush x:Key="RatingControlSelectedForeground" Color="Red" />
<SolidColorBrush Color="Blue" x:Key="RatingControlUnselectedForeground" />
</Page.Resources>
或者最后,如果您将其添加到<Application.Resources>
的{{1}}中,则可以将其置于应用程序级别。然后它将应用于应用程序中的任何App.xaml
。
如果您想要更多的控制甚至更好的自定义,则可以直接编辑默认的RatingControl
样式及其模板。
在设计器中(或在“文档大纲”窗口中)右键单击RatingControl
,然后选择编辑样式,然后编辑副本,设置自定义名称和位置。应该放置样式,然后按确定进行确认。这将创建控件默认模板的副本,您可以在其中编辑RatingControl
VisualState
值以匹配所需的配色方案。
还请注意,您仍然必须为空星(Setter
)提供自定义资源。