C# 如何自定义列表框当前选定项的颜色?
这个问题源于我在stackoverflow中的最后一个问题。自动滚动到特定项目的问题已经解决,但现在我想将所选项目背景设置为透明或白色。我该怎么做 更新1C# 如何自定义列表框当前选定项的颜色?,c#,wpf,listbox,selecteditem,C#,Wpf,Listbox,Selecteditem,这个问题源于我在stackoverflow中的最后一个问题。自动滚动到特定项目的问题已经解决,但现在我想将所选项目背景设置为透明或白色。我该怎么做 更新1 <ListBox ItemsSource="{Binding SomeData}" SelectedIndex="{Binding SomeIndex}"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <Wr
<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颜色的方法。从窗口中的一个简单列表框开始:
<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”),并使用混合录制修改模板元素的属性。默认情况下,有一些针对“目标元素”的属性更改,这意味着模板本身,如“前景”。其他的目标是模板的元素,比如边框“Bd”
当然,您可以从头开始创建ListBoxItemStyle,但是如果您只想进行简单的更改,这种方法会更快。您能提供一些代码吗?您尝试过什么?这是ASP.net Webforms吗?asp.NETMVC?winforms?WPF?更多的细节会有帮助。。。例如,您是在客户端(可能)还是服务器端(例如li.Attributes.Add(“style”,“color:blue;”)上执行此操作?如果你发布你的风格,也许我们可以发现问题。这可能会有帮助。。。我认为这找到了一个可能对你有帮助的解决方案。