Изменение цвета(Foreground) TextBlock
Приветствую, форумчане.
У меня есть подобная панелька (Переключение между временными отрезками) (картинка ниже)
При нажатии на любую из этих элементов, он меняет цвет на белый и полоска снизу появляется под ним. А остальные элементы становятся другого цвета, то есть темного, и соответственно полоска также под ними пропадает. А при наведении на любой из этих TextBlock начинается анимация смены цвета на белый, и пропадает плавно при убирании с нее курсора.
У меня возникла проблема: Я написал стиль для элемента в App.xaml, написал код в нужном XAML файле, задал для TextBlock нужный стиль, в коде сделал всё что нужно, но когда я например нажал на "Прошлый Месяц" он выделился белым и оба остальных стали одного темного цвета. НО, при наведении на любой из не выбранных текст блоков, они оба меняют цвет и становятся белыми, хотя стили я делал для каждого отдельно. А когда изначально навожусь на прошлый или текущий месяц, то всё нормально, они меняют цвет по отдельности. Снизу прикреплю пару скриншотов для понимая.
Курсор наведен на "Текущий Месяц", выбран раздел "Общая":
Курсор наведен на "Текущий Месяц", выбран раздел "Прошлый месяц" (не обращайте внимание на то, что прошлый месяц не белого цвета.
Мой код:
- Стиль в App.xaml:
<Style x:Key="captStatsTimeStyle" TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="Foreground.Color"
To="#F8F8FF" Duration="0:0:0.4" >
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="Foreground.Color"
To="#6B5D88" Duration="0:0:0.2" >
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
- Код из xaml файла этого окошка:
<StackPanel Orientation="Horizontal" Width="350" Height="18" HorizontalAlignment="Center">
<TextBlock x:Name="LastMonthTextBlock" Width="112" Style="{StaticResource captStatsTimeStyle}" Text="Прошлый месяц" FontSize="15" FontFamily="{StaticResource SFProDisplayMedium}" Foreground="#6B5D88" Margin="9,0,0,0" MouseLeftButtonDown="LastMonthStats_Click" />
<TextBlock x:Name="ThisMonthTextBlock" Width="105.92" Style="{StaticResource captStatsTimeStyle}" Text="Текущий месяц" FontSize="15" FontFamily="{StaticResource SFProDisplayMedium}" Foreground="#6B5D88" Margin="34,0,0,0" MouseLeftButtonDown="ThisMonthStats_Click"/>
<TextBlock x:Name="AllTimeTextBlock" Width="47.33" Style="{StaticResource captStatsTimeStyle}" Text="Общая" FontSize="15" FontFamily="{StaticResource SFProDisplayMedium}" Foreground="#FFFFFF" Margin="34,0,0,0" MouseLeftButtonDown="AllTimeStats_Click" />
</StackPanel>
- Код из cs файла, отвечающего за это окошко
private SolidColorBrush WhiteColor = new SolidColorBrush(Color.FromRgb(255, 255, 255));
private SolidColorBrush notSelectedCaptStatsTimeColor = new SolidColorBrush(Color.FromRgb(107, 93, 136));
private void LastMonthStats_Click(object sender, RoutedEventArgs e)
{
lastMonthLine.Visibility = Visible;
thisMonthLine.Visibility = Hidden;
allTimeLine.Visibility = Hidden;
LastMonthTextBlock.Foreground = WhiteColor;
ThisMonthTextBlock.Foreground = notSelectedCaptStatsTimeColor;
AllTimeTextBlock.Foreground = notSelectedCaptStatsTimeColor;
}
private void ThisMonthStats_Click(object sender, RoutedEventArgs e)
{
lastMonthLine.Visibility = Hidden;
thisMonthLine.Visibility = Visible;
allTimeLine.Visibility = Hidden;
LastMonthTextBlock.Foreground = notSelectedCaptStatsTimeColor;
ThisMonthTextBlock.Foreground = WhiteColor;
AllTimeTextBlock.Foreground = notSelectedCaptStatsTimeColor;
}
private void AllTimeStats_Click(object sender, RoutedEventArgs e)
{
lastMonthLine.Visibility = Hidden;
thisMonthLine.Visibility = Hidden;
allTimeLine.Visibility = Visible;
LastMonthTextBlock.Foreground = notSelectedCaptStatsTimeColor;
ThisMonthTextBlock.Foreground = notSelectedCaptStatsTimeColor;
AllTimeTextBlock.Foreground = WhiteColor;
}