Может кто-нибудь помочь мне с этим?У меня есть следующие настройки шаблона в WPF:
<Style TargetType="{x:Type Label}" x:Key="NavLink">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate x:Name="NavLinkControlTemplate" TargetType="{x:Type Label}">
<Border x:Name="NavLinkBorder">
<ContentPresenter x:Name="NavLinkContent" Margin="4,4,4,4" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="NavLinkBorder" Property="Background" Value="#CCCCCC" />
<Setter Property="Cursor" Value="Hand" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter TargetName="NavLinkBorder" Property="Background" Value="#EAEAEA" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Когда моя программа загружена, она автоматически создает список меток, которые служат в качестве меню навигации.Как видно из вышесказанного, когда мышь наводит курсор на одну из меток, цвет фона меняется.Единственная проблема с этим заключается в том, что у меня также есть контекстное меню, примененное к меткам, и когда я щелкаю правой кнопкой мыши, чтобы вызвать его, фон метки возвращается к исходному цвету вместо того, чтобы оставаться цветом MouseOver.
Я гуглил около часа или около того и не могу найти свойство триггера, которое проверит, нажата ли правая кнопка мыши, поэтому я предполагаю, что его нет.Я думаю, может быть, я смогу сделать это с помощью кода.
Я попробовал следующий код, но мне не повезло:
// this event is being added to each label at runtime...
tempLabel.MouseRightButtonUp += new MouseButtonEventHandler(NavLink_RightClicked);
// this is the method that the right-click calls...
private void NavLink_RightClicked(object sender, EventArgs e)
{
if (sender is Label)
{
currentContextLink = sender as Label;
// the below line won't work because the ControlTemplate seems to be overwriting it...
currentContextLink.Background = new SolidColorBrush(appFunctions.HexToColor("#FF0000"));
}
}
Я также попытался получить родителя Labelэлемент как Граница, но кажется, что, поскольку он настроен с помощью шаблона, родительский элемент Label на самом деле является StackPanel, в которой находятся все метки.
Может кто-нибудь помочь мне разобраться, как получить доступ к границеи изменить его цвет фона, или, может быть, направить меня в любом направлении, которое может помочь мне достичь этого?
Любая помощь очень ценится!