Как установить цвет для звезд RatingControl в UWP? - PullRequest
0 голосов
/ 17 октября 2018

Я добавил RatingControl в свое приложение UWP.Как я могу установить цвет для заполненных и пустых звезд?Вот код, который я добавил:

<RatingControl x:Name="MyRating" Value="3.5" Width="300" Height="200"  />

1 Ответ

0 голосов
/ 17 октября 2018

Если вы выберете стиль по умолчанию 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...