WPF ListView CellTemplate Border---设置ListView单元格的边框

1.

先看图片

WPF ListView CellTemplate Border---设置ListView单元格的边框

2.

这是styleresource;应该还能精简掉很多;

dd

    <Window.Resources>

        <Color x:Key="WindowColor">#FFE8EDF9</Color>

        <Color x:Key="ContentAreaColorLight">#FFC5CBF9</Color>

        <Color x:Key="ContentAreaColorDark">#FF7381F9</Color>



        <Color x:Key="DisabledControlLightColor">#FFE8EDF9</Color>

        <Color x:Key="DisabledControlDarkColor">#FFC5CBF9</Color>

        <Color x:Key="DisabledForegroundColor">#FF888888</Color>



        <Color x:Key="SelectedBackgroundColor">#FFC5CBF9</Color>

        <Color x:Key="SelectedUnfocusedColor">#FFDDDDDD</Color>



        <Color x:Key="ControlLightColor">White</Color>

        <Color x:Key="ControlMediumColor">#FF7381F9</Color>

        <Color x:Key="ControlDarkColor">#FF211AA9</Color>



        <Color x:Key="ControlMouseOverColor">#FF3843C4</Color>

        <Color x:Key="ControlPressedColor">#FF211AA9</Color>





        <Color x:Key="GlyphColor">#FF444444</Color>

        <Color x:Key="GlyphMouseOver">sc#1, 0.004391443, 0.002428215, 0.242281124</Color>



        <!--Border colors-->

        <Color x:Key="BorderLightColor">#FFCCCCCC</Color>

        <Color x:Key="BorderMediumColor">#FF888888</Color>

        <Color x:Key="BorderDarkColor">#FF444444</Color>



        <Color x:Key="PressedBorderLightColor">#FF888888</Color>

        <Color x:Key="PressedBorderDarkColor">#FF444444</Color>



        <Color x:Key="DisabledBorderLightColor">#FFAAAAAA</Color>

        <Color x:Key="DisabledBorderDarkColor">#FF888888</Color>



        <Color x:Key="DefaultBorderBrushDarkColor">Black</Color>



        <!--Control-specific resources.-->

        <Color x:Key="HeaderTopColor">#FFC5CBF9</Color>

        <Color x:Key="DatagridCurrentCellBorderColor">Black</Color>

        <Color x:Key="SliderTrackDarkColor">#FFC5CBF9</Color>



        <Color x:Key="NavButtonFrameColor">#FF3843C4</Color>



        <LinearGradientBrush x:Key="MenuPopupBrush"

                     EndPoint="0.5,1"

                     StartPoint="0.5,0">

            <GradientStop Color="{DynamicResource ControlLightColor}"

                Offset="0" />

            <GradientStop Color="{DynamicResource ControlMediumColor}"

                Offset="0.5" />

            <GradientStop Color="{DynamicResource ControlLightColor}"

                Offset="1" />

        </LinearGradientBrush>



        <LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill"

                     StartPoint="0,0"

                     EndPoint="1,0">

            <LinearGradientBrush.GradientStops>

                <GradientStopCollection>

                    <GradientStop Color="#000000FF"

                    Offset="0" />

                    <GradientStop Color="#600000FF"

                    Offset="0.4" />

                    <GradientStop Color="#600000FF"

                    Offset="0.6" />

                    <GradientStop Color="#000000FF"

                    Offset="1" />

                </GradientStopCollection>

            </LinearGradientBrush.GradientStops>

        </LinearGradientBrush>



        <Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}"

       TargetType="ScrollViewer">

            <Setter Property="Template">

                <Setter.Value>

                    <ControlTemplate TargetType="ScrollViewer">

                        <Grid Background="{TemplateBinding Background}">

                            <Grid.ColumnDefinitions>

                                <ColumnDefinition Width="*" />

                                <ColumnDefinition Width="Auto" />

                            </Grid.ColumnDefinitions>

                            <Grid.RowDefinitions>

                                <RowDefinition Height="*" />

                                <RowDefinition Height="Auto" />

                            </Grid.RowDefinitions>



                            <DockPanel Margin="0">

                                <ScrollViewer DockPanel.Dock="Top"

                          HorizontalScrollBarVisibility="Hidden"

                          VerticalScrollBarVisibility="Hidden"

                          Focusable="false">

                                    <GridViewHeaderRowPresenter Margin="0"

                                          Columns="{Binding Path=TemplatedParent.View.Columns,

                RelativeSource={RelativeSource TemplatedParent}}"

                                          ColumnHeaderContainerStyle="{Binding

                Path=TemplatedParent.View.ColumnHeaderContainerStyle,

                RelativeSource={RelativeSource TemplatedParent}}"

                                          ColumnHeaderTemplate="{Binding

                Path=TemplatedParent.View.ColumnHeaderTemplate,

                RelativeSource={RelativeSource TemplatedParent}}"

                                          ColumnHeaderTemplateSelector="{Binding 

                Path=TemplatedParent.View.ColumnHeaderTemplateSelector,

                RelativeSource={RelativeSource TemplatedParent}}"

                                          AllowsColumnReorder="{Binding

                Path=TemplatedParent.View.AllowsColumnReorder,

                RelativeSource={RelativeSource TemplatedParent}}"

                                          ColumnHeaderContextMenu="{Binding

                Path=TemplatedParent.View.ColumnHeaderContextMenu,

                RelativeSource={RelativeSource TemplatedParent}}"

                                          ColumnHeaderToolTip="{Binding

                Path=TemplatedParent.View.ColumnHeaderToolTip,

                RelativeSource={RelativeSource TemplatedParent}}"

                                          SnapsToDevicePixels="{TemplateBinding

                SnapsToDevicePixels}" />

                                </ScrollViewer>



                                <ScrollContentPresenter Name="PART_ScrollContentPresenter"

                                    KeyboardNavigation.DirectionalNavigation="Local"

                                    CanContentScroll="True"

                                    CanHorizontallyScroll="False"

                                    CanVerticallyScroll="False" />

                            </DockPanel>



                            <ScrollBar Name="PART_HorizontalScrollBar"

                     Orientation="Horizontal"

                     Grid.Row="1"

                     Maximum="{TemplateBinding ScrollableWidth}"

                     ViewportSize="{TemplateBinding ViewportWidth}"

                     Value="{TemplateBinding HorizontalOffset}"

                     Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />



                            <ScrollBar Name="PART_VerticalScrollBar"

                     Grid.Column="1"

                     Maximum="{TemplateBinding ScrollableHeight}"

                     ViewportSize="{TemplateBinding ViewportHeight}"

                     Value="{TemplateBinding VerticalOffset}"

                     Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />



                        </Grid>

                    </ControlTemplate>

                </Setter.Value>

            </Setter>

        </Style>



        <Style x:Key="GridViewColumnHeaderGripper"

       TargetType="Thumb">

            <Setter Property="Width"

          Value="1" />

            <Setter Property="Background">

                <Setter.Value>

                    <LinearGradientBrush StartPoint="0,0"

                           EndPoint="0,1">

                        <LinearGradientBrush.GradientStops>

                            <GradientStopCollection>

                                <GradientStop Color="{DynamicResource BorderLightColor}"

                          Offset="0.0" />

                                <GradientStop Color="{DynamicResource BorderDarkColor}"

                          Offset="1.0" />

                            </GradientStopCollection>

                        </LinearGradientBrush.GradientStops>

                    </LinearGradientBrush>

                </Setter.Value>

            </Setter>

            <Setter Property="Template">

                <Setter.Value>

                    <ControlTemplate TargetType="{x:Type Thumb}">

                        <Border Padding="0"

                Background="Transparent">

                            <Rectangle HorizontalAlignment="Center"

                     Width="1"

                     Fill="{TemplateBinding Background}" />

                        </Border>

                    </ControlTemplate>

                </Setter.Value>

            </Setter>

            <Setter Property="BorderBrush">

                <Setter.Value>

                    <LinearGradientBrush EndPoint="0.5,1"

                           StartPoint="0.5,0">

                        <GradientStop Color="Black"

                      Offset="0" />

                        <GradientStop Color="White"

                      Offset="1" />

                    </LinearGradientBrush>

                </Setter.Value>

            </Setter>

        </Style>



        <Style x:Key="{x:Type GridViewColumnHeader}"

       TargetType="GridViewColumnHeader">

            <Setter Property="HorizontalContentAlignment"

          Value="Center" />

            <Setter Property="VerticalContentAlignment"

          Value="Center" />

            <Setter Property="Foreground"

          Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />

            <Setter Property="Template">

                <Setter.Value>

                    <ControlTemplate TargetType="GridViewColumnHeader">

                        <Grid>

                            <VisualStateManager.VisualStateGroups>

                                <VisualStateGroup x:Name="CommonStates">

                                    <VisualState x:Name="Normal" />

                                    <VisualState x:Name="MouseOver">

                                        

                                    </VisualState>

                                    <VisualState x:Name="Pressed" />

                                    <VisualState x:Name="Disabled" />

                                </VisualStateGroup>

                            </VisualStateManager.VisualStateGroups>

                            <Border x:Name="HeaderBorder"

                  BorderThickness="0"

                  Padding="0">

                                <Border.BorderBrush>

                                    <LinearGradientBrush StartPoint="0,0"

                                   EndPoint="0,1">

                                        <LinearGradientBrush.GradientStops>

                                            <GradientStopCollection>

                                                <GradientStop Color="{DynamicResource BorderLightColor}"

                                  Offset="0.0" />

                                                <GradientStop Color="{DynamicResource BorderDarkColor}"

                                  Offset="1.0" />

                                            </GradientStopCollection>

                                        </LinearGradientBrush.GradientStops>

                                    </LinearGradientBrush>



                                </Border.BorderBrush>

                                <Border.Background>



                                    <LinearGradientBrush StartPoint="0,0"

                                   EndPoint="0,1">

                                        <LinearGradientBrush.GradientStops>

                                            <GradientStopCollection>

                                                <GradientStop Color="{DynamicResource ControlLightColor}"

                                  Offset="0.0" />

                                                <GradientStop Color="{DynamicResource ControlMediumColor}"

                                  Offset="1.0" />

                                            </GradientStopCollection>

                                        </LinearGradientBrush.GradientStops>

                                    </LinearGradientBrush>



                                </Border.Background>

                                <ContentPresenter x:Name="HeaderContent"

                              Margin="0,0,0,1"

                              RecognizesAccessKey="True"

                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"

                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"

                              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>

                            </Border>

                            <Thumb x:Name="PART_HeaderGripper"

                 HorizontalAlignment="Right"

                 Margin="0,0,-7,0"

                 Style="{StaticResource GridViewColumnHeaderGripper}" Background="Black" />

                        </Grid>

                    </ControlTemplate>

                </Setter.Value>

            </Setter>

            <Style.Triggers>

                <Trigger Property="Role"

             Value="Floating">

                    <Setter Property="Opacity"

              Value="0.7" />

                    <Setter Property="Template">

                        <Setter.Value>

                            <ControlTemplate TargetType="GridViewColumnHeader">

                                <Canvas Name="PART_FloatingHeaderCanvas">

                                    <Rectangle Fill="#60000000"

                         Width="{TemplateBinding ActualWidth}"

                         Height="{TemplateBinding ActualHeight}" />

                                </Canvas>

                            </ControlTemplate>

                        </Setter.Value>

                    </Setter>

                </Trigger>

                <Trigger Property="Role"

             Value="Padding">

                    <Setter Property="Template">

                        <Setter.Value>

                            <ControlTemplate TargetType="GridViewColumnHeader">

                                <Border Name="HeaderBorder"

                    BorderThickness="0,1,0,1">

                                    <Border.Background>

                                        <SolidColorBrush Color="{DynamicResource ControlLightColor}" />

                                    </Border.Background>

                                    <Border.BorderBrush>

                                        <LinearGradientBrush StartPoint="0,0"

                                     EndPoint="0,1">

                                            <LinearGradientBrush.GradientStops>

                                                <GradientStopCollection>

                                                    <GradientStop Color="{DynamicResource BorderLightColor}"

                                    Offset="0.0" />

                                                    <GradientStop Color="{DynamicResource BorderDarkColor}"

                                    Offset="1.0" />

                                                </GradientStopCollection>

                                            </LinearGradientBrush.GradientStops>

                                        </LinearGradientBrush>

                                    </Border.BorderBrush>

                                </Border>

                            </ControlTemplate>

                        </Setter.Value>

                    </Setter>

                </Trigger>

            </Style.Triggers>

        </Style>



        <Style x:Key="{x:Type ListView}"

       TargetType="ListView">

            <Setter Property="SnapsToDevicePixels"

          Value="true" />

            <Setter Property="OverridesDefaultStyle"

          Value="true" />

            <Setter Property="ScrollViewer.HorizontalScrollBarVisibility"

          Value="Auto" />

            <Setter Property="ScrollViewer.VerticalScrollBarVisibility"

          Value="Auto" />

            <Setter Property="ScrollViewer.CanContentScroll"

          Value="true" />

            <Setter Property="VerticalContentAlignment"

          Value="Center" />

            <Setter Property="Template">

                <Setter.Value>

                    <ControlTemplate TargetType="ListView">

                        <Border Name="Border" 

                BorderThickness="1">

                            <Border.Background>

                                <SolidColorBrush Color="{StaticResource ControlLightColor}" />

                            </Border.Background>

                            <Border.BorderBrush>

                                <SolidColorBrush Color="{StaticResource BorderMediumColor}" />

                            </Border.BorderBrush>

                            <ScrollViewer Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}">

                                <ItemsPresenter />

                            </ScrollViewer>

                        </Border>

                        <ControlTemplate.Triggers>

                            <Trigger Property="IsGrouping"

                   Value="true">

                                <Setter Property="ScrollViewer.CanContentScroll"

                    Value="false" />

                            </Trigger>

                            <Trigger Property="IsEnabled"

                   Value="false">

                                <Setter TargetName="Border"

                    Property="Background">

                                    <Setter.Value>

                                        <SolidColorBrush Color="{DynamicResource DisabledBorderLightColor}" />

                                    </Setter.Value>

                                </Setter>

                            </Trigger>

                        </ControlTemplate.Triggers>

                    </ControlTemplate>

                </Setter.Value>

            </Setter>

        </Style>



        <Style x:Key="{x:Type ListViewItem}"

       TargetType="ListViewItem">

            <Setter Property="SnapsToDevicePixels"

          Value="true" />

            <Setter Property="OverridesDefaultStyle"

          Value="true" />

            <Setter Property="Template">

                <Setter.Value>

                    <ControlTemplate TargetType="ListBoxItem">

                        <Border x:Name="Border"

                Padding="0"

                SnapsToDevicePixels="true"

                Background="Black">

                            <DockPanel Background="White" Margin="0 0 0 1" Name="allen" LastChildFill="True">

                            <GridViewRowPresenter DockPanel.Dock="Left" />

                            </DockPanel>

                        </Border>

                        <ControlTemplate.Triggers>

                            <Trigger Property="IsSelected" Value="True">

                                <Setter TargetName="allen" Property="DockPanel.Background" Value="#B5B5B5">                                    

                                </Setter>

                            </Trigger>

                        </ControlTemplate.Triggers>

                    </ControlTemplate>

                </Setter.Value>

            </Setter>

        </Style>



    </Window.Resources>

3.

这是ListView

        <ListView Height="697" HorizontalAlignment="Left" Margin="218,41,0,0" Name="listView1" VerticalAlignment="Top" Width="646" ItemsSource="{Binding Path=ArticleList}">

            <ListView.View>

                <GridView>

                    <GridViewColumn Header="标题" Width="80" CellTemplateSelector="{x:Null}">

                        <GridViewColumn.CellTemplate>

                            <DataTemplate>

                                <DockPanel LastChildFill="True">

                                    <TextBlock DockPanel.Dock="Left" Text="{Binding Path=title}" HorizontalAlignment="Left"></TextBlock>                                    

                                </DockPanel>

                                

                            </DataTemplate>

                        </GridViewColumn.CellTemplate>

                    </GridViewColumn>

                    <GridViewColumn Header="文章内容">

                        <GridViewColumn.CellTemplate>

                            <DataTemplate>

                                <DockPanel>

                                    <Rectangle DockPanel.Dock="Left" Fill="Black" Width="1"></Rectangle>

                                    <TextBlock DockPanel.Dock="Left" Text="{Binding Path=Description}"></TextBlock>                                    

                                </DockPanel>

                            </DataTemplate>

                        </GridViewColumn.CellTemplate>

                    </GridViewColumn>

                </GridView>

            </ListView.View>

        </ListView>

基本上就是这样了

你可能感兴趣的:(ListView)