我試圖改變一些元素的顏色,當他們被選中和鼠標移過它們時。在我第一次嘗試使用ItemsControl
和一個邊框來激活顏色變化時,這會給我鼠標上的顏色變化,但我不確定我需要觸發哪個屬性來選擇它,如下所示:IsFocussed
不正確:我可以選擇一個邊框嗎?或者我該如何避免打破我的列表框繼承?
<UserControl x:Class="Crp.CodePlusTeamExplorerSectionView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:Crp.ViewModels="clr-namespace:Crp.ViewModels"
mc:Ignorable="d"
d:DesignHeight="250" d:DesignWidth="300">
<UserControl.DataContext>
<Crp.ViewModels:RelatedViewsViewModel/>
</UserControl.DataContext>
<Control.Resources>
<Style x:Key="styleWithTrigger" TargetType="Border">
<Setter Property="Background" Value="Transparent" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#3E3E40" />
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="#007ACC" />
</Trigger>
</Style.Triggers>
</Style>
</Control.Resources>
<ItemsControl Name="RelatedViewsICtl" ItemsSource="{Binding RelatedViews}" MouseDoubleClick="RelatedViewsLB_MouseDoubleClick">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Name="border" VerticalAlignment="Stretch" Height="23" MinHeight="22" Style="{StaticResource styleWithTrigger}">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Text="" Margin="1"/>
<Image Source="Resources\Review.png"/>
<TextBlock Text="{Binding Path=Id}" Margin="1"/>
<TextBlock Text="-" Margin="1"/>
<TextBlock Text="{Binding Path=Name}" Margin="1" />
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
我曾嘗試另一種方法是將其轉換爲一個ListBox
,這似乎是一個更好的辦法,但列表框繼承了正確的屬性停在我的元素,而且我不確定如何修復此問題
:
然後,您可以將樣式容器
ListBoxItem
。 「listbox阻止我的元素繼承正確的屬性」 - 請你澄清/詳細說明這個聲明嗎? – ASh您也可以覆蓋系統顏色。當我想在全球範圍內做東西時,我真的很喜歡它。因爲您不再需要使用觸發器或擔心事件。您只需爲給定對象設置SystemColor,並將其「MouseOver」設置爲您想要的顏色。 [參考](https://blogs.msdn.microsoft.com/wpf/2010/11/30/systemcolors-reference/) –