Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何自定义列表框当前选定项的颜色?_C#_Wpf_Listbox_Selecteditem - Fatal编程技术网

C# 如何自定义列表框当前选定项的颜色?

C# 如何自定义列表框当前选定项的颜色?,c#,wpf,listbox,selecteditem,C#,Wpf,Listbox,Selecteditem,这个问题源于我在stackoverflow中的最后一个问题。自动滚动到特定项目的问题已经解决,但现在我想将所选项目背景设置为透明或白色。我该怎么做 更新1 <ListBox ItemsSource="{Binding SomeData}" SelectedIndex="{Binding SomeIndex}"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <Wr

这个问题源于我在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颜色的方法。

从窗口中的一个简单列表框开始:

<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;”)上执行此操作?如果你发布你的风格,也许我们可以发现问题。这可能会有帮助。。。我认为这找到了一个可能对你有帮助的解决方案。