1

这个问题源于我在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>

对于这个例子,我需要一种自定义选定项颜色的方法。

4

1 回答 1

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 模板。在默认模板中,已经有一些逻辑可以根据触发器和视觉状态更改元素的视觉效果。元素被选中时的视觉效果由触发器驱动,您可以对其进行修改以满足您的需求。

选择视图触发器。会有一些由“IsSelected”属性驱动的触发器。在那里,您可以更改项目在选择、选择和禁用等时的外观。

在此处输入图像描述

只需从现有触发器中选择您想要的触发器(例如,“IsSelected = True”)并使用 Blend 录制修改模板元素的属性。默认情况下,有一些针对“目标元素”的属性更改,即模板本身,如“前景”。其他目标元素是模板,如边框“Bd”。

当然,您可以从头开始创建 ListBoxItemStyle,但如果您只想进行简单的更改,这种方式会更快。

于 2012-11-20T14:58:44.207 回答