2013-06-05 72 views
1

我该如何做?我发现的一切都表明这应该起作用,但它不适合我。我究竟做错了什么?在列表视图中更改选择高亮颜色

<ListView ItemsSource="{Binding ListViewItems}" > 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Style.Resources> 
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Green"/> 
      </Style.Resources> 
     </Style> 
    </ListView.ItemContainerStyle> 
</ListView> 

回答

0

上面显示的代码对我来说确实有效。但是,这会在ListBox处于焦点时设置颜色。要设置颜色,当它没有焦点,尝试...

<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Green" /> 

Check this例子来实现它在Win 8

+0

我不知道我的Visual Studio是否有一些错误,但是我发布的代码根本没有做任何事情。我添加了你的代码,但也没有做任何事情。我非常沮丧,因为我在网上找到的所有代码对我的ListView完全没有任何影响,就好像根本没有代码。 – Chris

+0

这可能是由于Windows主题。什么是您的Windows操作系统版本和主题?我注意到了Win 8上的一些颜色相关的问题。 – Nishant

+1

[Check this](http://stackoverflow.com/questions/12007918/list-combo-box-background-and-selected-colours-under-net-4-5 )...如果您在Win 8上运行您的应用程序,您似乎需要为ListBoxItem编写自己的模板。 – Nishant

0

尝试直接将其设置为<ListView.Resources><SolidColorBrush x:Key=...></ListView.Resources>

尝试定义与关键"{x:Static SystemColors.InactiveSelectionHighlightBrushKey}"一个SolidColorBrush了。

UPDATE: 只是试图在Win7和目标.NET 4.5运行下面的XAML代码:

<ListView ItemsSource="{Binding DummyItems}"> 
     <ListView.Resources> 
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Green"/> 
      <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="LightGreen"/> 
     </ListView.Resources> 
    </ListView> 

就像一个魅力!不过,这似乎是,这不会在win8上工作。 所以可能没有办法绕过来定义自己的模板。请参阅this page

+0

不,没有工作。 – Chris

+0

@Chris是你的.net4还是4.5?据我记忆,一些关于BrushKeys的行为已经在Win7或Win8上的4.5 ... exec中改变了? – Christian

+0

我的目标是Windows 8中的4.5 – Chris