这个问题来自我在stackoverflow中的最后一个问题。自动滚动到特定项目的问题已解决,但现在我想将所选项目背景设置为透明或白色。我怎么能这样做?
更新1
<ListBox ItemsSource="{Binding SomeData}"
SelectedIndex="{Binding SomeIndex}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<SomeChart DataContext="{Binding }" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
对于这个例子,我需要一种方法来自定义selecteditem颜色。
答案 0 :(得分:2)
从窗口中的简单列表框开始:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow"
Width="525"
Height="350">
<Window.DataContext>
<local:ViewModel />
</Window.DataContext>
<Grid Name="LayoutRoot">
<ListBox ItemsSource="{Binding Elements}"/>
</Grid>
在ExpressionBlend中选择列表框:
然后在上级菜单中选择“对象”并选择:
这将创建一个新的ListBoxItemStyle,并为新样式创建一个基于原始的ListBoxItem模板。在默认模板中,已经有一些逻辑可以根据触发器和visualstates更改元素的可视化。选择元素时的视觉效果由触发器驱动,您可以修改该触发器以满足您的需求。
选择视图触发器。将有一些由“IsSelected”属性驱动的触发器。在那里,您可以在选择,选择和禁用项目等时更改项目的外观。
只需从现有触发器中选择所需的触发器(例如,“IsSelected = True”),然后使用Blend记录修改模板元素的属性。默认情况下,针对“目标元素”进行了一些属性更改,这意味着模板本身就像“前景”一样。其他人瞄准模板的元素,如Border“Bd”。
当然,您可以从头开始创建ListBoxItemStyle,但如果您只想进行简单的更改,这种方式会更快。