В моем проекте Windows 8.1 у меня есть поле со списком со специальным стилем, чтобы я мог изменить цвет переднего плана текста заполнителя.Изменить цвет текста заполнителя при отключении combobox в WinRT XAML
Когда поле со списком отключено, этот пользовательский цвет переднего плана слишком светлый, поэтому я хотел бы иметь возможность изменить этот цвет текста-заполнителя.
Изменение ComboBoxDisabledForegroundThemeBrush влияет только на фактический текст в поле со списком, а не на текст заполнителя, и я не вижу никакого способа управления передним планом PlaceholderTextBlock для разных визуальных состояний.
Может ли цвет текста заполнитель обладать визуальным состоянием?
<Style x:Key="MyCustomStyle" TargetType="ComboBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Background">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledBackgroundThemeBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Background">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledBorderThemeBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDisabledForegroundThemeBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DropDownGlyph">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxArrowDisabledForegroundThemeBrush}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
...
<ContentPresenter x:Name="ContentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Grid.Row="1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<TextBlock x:Name="PlaceholderTextBlock" Foreground="#FFAAAAAA" FontWeight="Normal" Text="{TemplateBinding PlaceholderText}"/>
</ContentPresenter>
Я хотел бы сохранить пользовательский цвет переднего плана, указанный в исходном сообщении, но хочу, чтобы иметь возможность контролировать отключенный цвет переднего плана. – jkh
Я обновил ответ. –