Стилизация меню ListView с закругленными углами - PullRequest
0 голосов
/ 26 января 2012

Я собираюсь создать меню, используя 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?

Ответы [ 2 ]

1 голос
/ 26 января 2012

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

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

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

<ListView.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
</ListView>
1 голос
/ 26 января 2012

Чтобы предотвратить выделение синего прямоугольника, вам нужно установить ItemContainerStyle вместо ItemTemplate. Обратитесь к MSDN по Стили и шаблоны ListView , чтобы узнать о стиле по умолчанию ListViewItem, особенно о визуальном состоянии «Выбрано».

...