2012-01-26 2 views
0

Я ищу для создания меню с помощью ListView (я открыт для использования чего-либо еще, что позволит достичь эффекта, который я ищу. эмулировать следующий.Стилирование меню «ListView» с круглыми углами

Google Calendar Menu

Вот что я в настоящее время для моего XAML.

<ListView 
     ItemsSource="{Binding Decisions}" 
     SelectedItem="{Binding SelectedDecision}" 
     HorizontalAlignment="Left" 
     BorderThickness="0" 
     Width="350" 
     FontSize="12"> 
     <ListView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel 
        Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}" /> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Border 
        BorderThickness="1" 
        BorderBrush="#DDD" 
        CornerRadius="2"> 
        <TextBlock 
         Text="{Binding Converter={StaticResource DecisionTypeNameConverter}}" 
         Padding="8" 
         Background="#EEE" /> 
       </Border> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

Это производит в порядке, глядя в меню, пока не будет выбран пункт. После того, как элемент выбран именно окруженный уродливым синим цветом. Я воссоздаю этот взгляд (эффект градиента не требуется) в XAML?

ответ

1

Вам нужно отслеживать SelectedItem?

Если нет, то я бы предложил используя ItemsControl

Если да, то вам необходимо перезаписать выбранный элемент цвет кисти, чтобы он не появлялся. Это системный цвет, и я обычно перезаписываю его следующим образом:

<ListView.Resources> 
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" /> 
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" /> 
</ListView> 
+0

Мне нужно 'SelectedItem' и изменение кистей прекрасно работает. Это немного в стороне, но как установить стиль для моего фона (например), как только элемент выбран? У меня есть триггер, когда 'IsSelected' является' True' для 'ListViewItem', что я хотел бы изменить цвет фона моего элемента' Border'. Установка свойства 'Border.Background' в моем триггере не делает трюк. – Nosila

+1

@Nosila В тэге '' попробуйте установить «Background =» {TemplateBinding Background}. Затем вы можете установить триггер стиля в стиле «ListViewItem», который устанавливает фон на основе того, является ли «IsSelected» истинным или нет. – Rachel

+0

Awesome. Большое спасибо. : D – Nosila

1

Для предотвращения синего прямоугольника выбора вам нужно будет установить ItemContainerStyle вместо ItemTemplate. Проконсультируйтесь с MSDN по телефону ListView Styles and Templates, чтобы узнать о стиле по умолчанию для ListViewItem, особенно в выбранном состоянии.

+0

Спасибо. Позвольте мне изучить это. – Nosila

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