Как сделать стиль в ListView SelectedItem.? - PullRequest
2 голосов
/ 16 ноября 2011

Я работаю над приложением WPF и хочу создать стиль для ListViewItem. Я сделал стиль для этого, но это не дает мне точный результат, чего я хочу. Помимо этого я хочу CornerRadius в этом стиле, так как я могу добавить это?

            <ListView x:Name="MenuBarList" 
                    Grid.Row="1"
                    Height="{Binding MainMenuHeight}"  
                    Width="{Binding MainMenuWidth}" 
                    ItemsSource="{Binding Path=Menu.Options}" 
                    SelectedItem="{Binding Path=SelectedMainMenuOption, Mode=TwoWay}"
                    Foreground="White"
                    Background="Transparent" 
                    VerticalContentAlignment="Center"
                    HorizontalContentAlignment="Center"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    IsSynchronizedWithCurrentItem="True"
                    IsTabStop="False">

                <ListView.Style>
                    <Style TargetType="{x:Type ListView}">
                        <Setter Property="BorderBrush" Value="White"/>
                        <Setter Property="BorderThickness" Value="0"/>
                        <Setter Property="Margin" Value="0"/> 
                        <Setter Property="Width" Value="300"/>
                        <Style.Resources>
                            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#9449b0"/>
                            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#9449b0"/>
                    </Style.Resources>
                    </Style>
                </ListView.Style>


                <ListView.ItemTemplate>
                    <DataTemplate>

                        <StackPanel Orientation="Horizontal" Focusable="False" VerticalAlignment="Center" HorizontalAlignment="Center">
                            <Image Source="{Binding IconPath}" 
                                   Focusable="False"
                                   HorizontalAlignment="Center"
                                   VerticalAlignment="Center"
                                   IsHitTestVisible="False"/>

                            <TextBlock Text="{Binding Title}" 
                                       Focusable="False" 
                                       HorizontalAlignment="Center" 
                                       VerticalAlignment="Center" 
                                       FontFamily="Segoe UI"
                                       FontSize="26"
                                       IsHitTestVisible="False"/>
                        </StackPanel>
                </DataTemplate>

                </ListView.ItemTemplate>
            </ListView>

1 Ответ

11 голосов
/ 16 ноября 2011

Быстрое решение - переопределить шаблон элемента. Вы можете обратиться к темам WPF или Silverlight о стилевом оформлении. См. BureauBlue.xaml для полного шаблона ListViewItem.

<ListView x:Name="uiList">
    <ListView.Resources>
        <ControlTemplate x:Key="SelectedTemplate" TargetType="ListViewItem">
            <Border SnapsToDevicePixels="true" 
                    BorderBrush="{TemplateBinding BorderBrush}" 
                    BorderThickness="{TemplateBinding BorderThickness}" 
                    Background="{TemplateBinding Background}"
                    CornerRadius="5" x:Name="border">
                <ContentControl 
                    SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
                    Margin="2,2,2,2" 
                    VerticalAlignment="Stretch"
                    Content="{TemplateBinding Content}" />
            </Border>
        </ControlTemplate>
        <Style TargetType="ListViewItem">
            <Style.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsSelected" Value="true" />
                        <Condition Property="Selector.IsSelectionActive" Value="true" />
                    </MultiTrigger.Conditions>
                    <Setter Property="Background" Value="Pink" />
                    <Setter Property="Template" Value="{StaticResource SelectedTemplate}" />
                </MultiTrigger>
            </Style.Triggers>
        </Style>
    </ListView.Resources>
    <ListViewItem Content="10" />
    <ListViewItem Content="11" />
</ListView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...