2009-03-23 4 views
3

У меня есть UserControl, которые в основном оборачивает в ListBox, как это -WPF - FocusVisualStyle, где я его применяю?

 <ListBox x:Name="lb" ItemsSource="{Binding ElementName=UC,Path=Pages}" 
      Background="{Binding ElementName=UC,Path=Background}" 
      BorderBrush="Transparent" 
      ScrollViewer.CanContentScroll="False" 
      ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
      ScrollViewer.VerticalScrollBarVisibility="Disabled"> 

     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal" IsItemsHost="True"/> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 

     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Grid Width="{Binding ElementName=UC,Path=ActualWidth}"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition MinWidth="20"/> 
         <ColumnDefinition/> 
         <ColumnDefinition MinWidth="20"/> 
        </Grid.ColumnDefinitions> 
        <ContentPresenter Grid.Column="1" Content="{Binding}"/> 
       </Grid> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

Мне нужно установить FocusVisualStyle в {x:Null}, чтобы скрыть эту функцию, но независимо от того, где я применять его, я до сих пор получить по умолчанию цвет на синий выбор. Я попытался установить его в ListBox, StackPanel и Grid, но безрезультатно.

Любая помощь будет отличной. Благодарю.

ответ

9

FocusVisualStyle применяет «маршевые муравьи» вокруг сфокусированного элемента, а не цвет фона. Для того, чтобы изменить цвет фона выбранных ListBoxItems, сделать что-то вроде:

<ListBox> 
    <ListBox.Resources> 
     <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Value="Red"/> 
     <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Value="Black"/> 
    </ListBox.Resources>  
</ListBox> 
2

Кент является правильным FocusVisualStyle только связана с фокусом клавиатуры, при выборе элементов управления с помощью клавиши табуляции.

Если вы просто пытаетесь отобразить список без каких-либо возможностей отбора вы можете просто быть в состоянии понизить ListBox к ItemsControl

<ItemsControl x:Name="lb" ItemsSource="{Binding ElementName=UC,Path=Pages}" 
    Background="{Binding ElementName=UC,Path=Background}" 
    BorderBrush="Transparent" ScrollViewer.CanContentScroll="False" 
    ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
    ScrollViewer.VerticalScrollBarVisibility="Disabled"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal" IsItemsHost="True"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <!-- others --> 
</ItemsControl> 
+0

Ja, был пойти с этим, но я рендеринга UiElements в ListBox, и они не подчиняются ItemTemplate в ItemsControl странно. Спасибо за помощь. – Stimul8d

Смежные вопросы