Если вы выберете стиль по умолчанию 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>
в App.xaml
.Затем он будет применен к любому RatingControl
в приложении.
Альтернативное решение - Пользовательский стиль
Если вам нужен больший контроль и еще лучшая настройка, вы можете напрямую редактировать стиль по умолчанию RatingControl
и его шаблон.Щелкните правой кнопкой мыши RatingControl
в конструкторе (или в окне «Структура документа») и выберите Изменить стиль , затем Изменить копию , задайте пользовательское имя и место, где должен быть размещен стильи подтвердите с помощью OK .Это создаст копию шаблона по умолчанию для элемента управления, где вы можете редактировать значения VisualState
Setter
в соответствии с желаемой цветовой схемой.
Также обратите внимание, что вам все равно придется предоставить пользовательскийресурс для пустых звездочек (RatingControlUnselectedForeground
).