2012-06-16 1 views
0

У меня есть surfacelistbox следующегоWPF Изменение ListBoxItem цвета фона при выборе

<s:SurfaceListBox x:Name="viewList" Height="200" Width="Auto" SelectedIndex="0" 
       ItemsSource="{Binding Source={StaticResource views}, XPath=Views/View}" 
       DisplayMemberPath="@Title"      
       SelectionChanged="viewList_SelectionChanged" Grid.Row="2" VerticalAlignment="Bottom" HorizontalContentAlignment="Stretch" ScrollViewer.VerticalScrollBarVisibility="Disabled"> 
     <s:SurfaceListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch"/> 
      </ItemsPanelTemplate> 
     </s:SurfaceListBox.ItemsPanel> 
    </s:SurfaceListBox> 

Я стиль элементов из файла App.xaml следующего

<Style TargetType="{x:Type s:SurfaceListBoxItem}"> 

     <Style.Resources> 
      <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
        Color="#0071bc"/> 
     </Style.Resources> 
     <Setter Property="Height" Value="200"></Setter> 
     <Setter Property="Width" Value="480"></Setter> 
     <Setter Property="BorderThickness" Value="0,0,0,0"></Setter> 
     <Setter Property="Padding" Value="20,20,0,20"></Setter> 
     <Setter Property="Margin" Value="0"></Setter> 
     <Setter Property="Foreground" Value="White"></Setter> 
     <Setter Property="BorderBrush" Value="White"></Setter> 
     <Setter Property="FontSize" Value="57"></Setter> 
     <Setter Property="FontFamily" Value="TitilliumText22L"></Setter> 
     <Setter Property="FontWeight" Value="Bold"></Setter> 
     <Setter Property="TextBlock.TextAlignment" Value="Left"></Setter> 
     <Setter Property="TextBlock.HorizontalAlignment" Value="Stretch"></Setter> 
     <Setter Property="Background"> 
      <Setter.Value> 
       <LinearGradientBrush> 
        <GradientStop Color="#3c3c3c" Offset="0"></GradientStop> 
        <GradientStop Color="#383838" Offset="0.6"></GradientStop> 
        <GradientStop Color="#6d6e6e" Offset="1"></GradientStop> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Foreground" Value="White"></Setter> 
       <Setter Property="BorderBrush" Value="#0071bc"></Setter> 
       <Setter Property="Background" Value="#0071bc"></Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

Моей проблема, в BackgroundColor выбранного элемента остается белым, в отличие от цветов, описанных в стилях. Любые указатели будут оценены

+1

Давай просто поиск SO listbox background http://stackoverflow.com/questions/7298282/listbox-selected-item-background – Paparazzi

+1

Попробуйте ответить на этот вопрос: [WPF: изменить цвет фона для выбранного элемента ListBox] (http://stackoverflow.com/ вопросы/2138200/МОФ-с висящий-фон цвета для выбранного-ListBox-п). –

+0

Blam, я уже искал и ни один из решений не работал для меня, к сожалению –

ответ

0

Похоже, вы пытаетесь создать свой собственный ListBox. ОБЫЧНО нет необходимости делать это, но если вы чувствуете, что вы должны, чтобы убедиться, что вы переопределить метод GetContainerForItemOverride

protected override DependencyObject GetContainerForItemOverride() 
    { 
     return new SurfaceListBoxItem(); 
    } 
+0

Нет, он использует SurfaceListBox с Microsoft Surface SDK –

+0

Ах да! Извини за это. –

2

Не уверен, что если вы нашли ответ на свой вопрос, но я просто столкнулся с той же проблемой. Попробуйте установить ресурс цвета поверхности в вашем стиле. Вы можете найти список цветов поверхности здесь: http://msdn.microsoft.com/en-us/library/microsoft.surface.presentation.surfacecolors_properties.aspx

Убедитесь, что вы импортировать пространство имен для SurfaceColors

xmlns:sc="clr-namespace:Microsoft.Surface.Presentation;assembly=Microsoft.Surface.Presentation" 

Затем обновить цвет поверхности в вашем стиле SurfaceListBox:

<s:SurfaceListBox> 
    <s:SurfaceListBox.ItemContainerStyle> 
     <Style TargetType="s:SurfaceListBoxItem"> 
       <Style.Resources> 
       <SolidColorBrush x:Key="{x:Static sc:SurfaceColors.ListBoxItemSelectionBackgroundBrushKey }" Color="#FFA2CD65"/> 
       </Style.Resources> 
      </Style> 
    </s:SurfaceListBox.ItemContainerStyle> 
</s:SurfaceListBox>