如何在listviewselecteditem中制作样式



我正在制作一个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>

快速解决方案是覆盖项模板。关于控件样式,您可以参考WPF或Silverlight主题。见BureauBlue。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>

相关内容

  • 没有找到相关文章

最新更新