Цвет содержимого флажка не может быть установлен в UWP - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь изменить цвет содержимого флажка. Я хочу изменить цвет t, если флажок установлен, но я даже не могу изменить его в XAML.

<CheckBox x:Name="Checkbox" Foreground="White" Content="I agree" HorizontalAlignment="Left" Margin="50,480,0,0" VerticalAlignment="Top" Height="46" Width="938" FontFamily="Arial" Checked="Checkbox_Checked" Background="#FF009FE3" />

Но цвет содержимого продолжает отображаться черным. Где моя ошибка? Звучит как простая вещь, но я не мог найти никакого решения там. Я новичок в UWP, что тоже не облегчает.

1 Ответ

1 голос
/ 01 апреля 2020

Если вы хотите изменить цвет переднего плана и фона флажка, вам нужно обновить его стиль. В стиле по умолчанию он устанавливает разные передний план и фон в разных состояниях (например, не отмечен или отмечен, и т. Д. c). Вам нужно переопределить визуальное состояние, которое вам нужно. Например, вы можете изменить передний план и фон в состоянии « UncheckedNormal ».

<VisualState x:Name="UncheckedNormal">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
            <DiscreteObjectKeyFrame KeyTime="0" Value="White"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Background">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/>
        </ObjectAnimationUsingKeyFrames>
        ......
    </Storyboard>
</VisualState>

Когда флажок установлен, вы хотите изменить цвет, вам нужно только сделать аналогичное поведение в состоянии « CheckedNormal ».

<VisualState x:Name="CheckedNormal">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Yellow"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Background">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
        </ObjectAnimationUsingKeyFrames>
        ......
    </Storyboard>
</VisualState>


//Apply
<CheckBox x:Name="Checkbox" 
                  Foreground="Blue" 
                  Style="{StaticResource CheckBoxStyle1}"
                  Content="I aggere"
                  HorizontalAlignment="Left" Margin="50,480,0,0" VerticalAlignment="Top" Height="46" Width="938" 
                  FontFamily="Arial"  
                  Checked="Checkbox_Checked" 
                  Background="#FF009FE3" />

Вы можете получить полный стиль, щелкнув правой кнопкой мыши CheckBox в визуальном конструкторе, а затем нажмите «Изменить шаблон» -> «Редактировать». копировать. Это создаст шаблон по умолчанию для CheckBox. С полностью измененным стилем вы можете ссылаться здесь .

Кроме того, если вы просто хотите изменить передний план текста, вы можете просто создать текстовый блок в флажке и напрямую установить его передний план.

<CheckBox x:Name="Checkbox" 
                  HorizontalAlignment="Left" Margin="50,480,0,0" VerticalAlignment="Top" Height="46" Width="938" 
                  FontFamily="Arial"  
                  Checked="Checkbox_Checked">
    <TextBlock Foreground="Yellow">hello</TextBlock>
</CheckBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...