win8中ListView、GridView、ListBox如何更改Item的背景色、间距之类等? .

   很久没有写一些文章了,总的来说就是懒,其实有很多东西都想拿出来分享,但是就是有时候懒得写。

           今天我们来说win8中ListView、GridView、ListBox这几个控件如何更改Item的样式,即按照你想要的效果来进行显示。

           这里以ListView为例来进行介绍,GridView、ListBox其实是一样的。先上图:

           下面这一幅图是系统默认的效果,系统默认的选中效果背景都是蓝色:

更改样式后的效果:

大家有没有发现更改后的样式每个Item的间距变大了,而且选中框的颜色也变成了红色。具体是怎么实现的,我们一步一步来进行。

第一步:首先建立一个Win Store的Blank项目,当然你不建立Blank,建立Grid或者其他的都行。

第二步:选择某一页面,如果是做demo的话,可以直接选择mainpage来建立GridView,这里分两部分来说

1):系统默认的样式,代码如下:

  1. <ListView x:Name="busGridView" SelectionMode="Single"  
  2.      AutomationProperties.AutomationId="ItemGridView" Grid.Row="1"  
  3.        AllowDrop="True" CanDragItems="True"  CanReorderItems="True" ScrollViewer.HorizontalScrollBarVisibilit                          y="Disabled">  
  4.          <ListView.ItemTemplate>  
  5.              <DataTemplate>  
  6.                  <Grid Background="Wheat">  
  7.                      <Grid.RowDefinitions>  
  8.                          <RowDefinition Height="98"/>  
  9.                      </Grid.RowDefinitions>  
  10.                      <Grid Background="#C5D600" Grid.Row="0" Opacity="0.26" Width="630" HorizontalAlignment="                                              Left" VerticalAlignment="Top"/>  
  11.                      <Grid Grid.Row="0">  
  12.                          <Grid.RowDefinitions>  
  13.                              <RowDefinition Height="58"/>  
  14.                              <RowDefinition Height="40"/>  
  15.                          </Grid.RowDefinitions>  
  16.                          <Grid.ColumnDefinitions>  
  17.                              <ColumnDefinition Width="36"/>  
  18.                              <ColumnDefinition/>  
  19.                              <ColumnDefinition Width="40"/>  
  20.                          </Grid.ColumnDefinitions>  
  21.                          <Grid Grid.Row="0" Grid.Column="1" Margin="0,22,0,18">  
  22.                              <Grid.ColumnDefinitions>  
  23.                                  <ColumnDefinition Width="2*"/>  
  24.                                  <ColumnDefinition Width="1*"/>  
  25.                              </Grid.ColumnDefinitions>  
  26.                              <StackPanel Grid.Column="0" HorizontalAlignment="Left" Orientation="Horizontal">  
  27.                                  <TextBlock Text="名称:"/>  
  28.                                  <TextBlock x:Name="businessName" Text="{Binding Title}"/>  
  29.                              </StackPanel>  
  30.                              <StackPanel Grid.Column="1" HorizontalAlignment="Left" Orientation="Horizontal">  
  31.                                  <TextBlock Text="费用:"/>  
  32.                                  <TextBlock x:Name="businessPrice"  Text="{Binding Title}"/>  
  33.                              </StackPanel>  
  34.                          </Grid>  
  35.                          <Grid Grid.Row="1" Grid.Column="1" Margin="0,0,0,22">  
  36.                              <Grid.ColumnDefinitions>  
  37.                                  <ColumnDefinition Width="*"/>  
  38.                                  <ColumnDefinition Width="*"/>  
  39.                                  <ColumnDefinition Width="*"/>  
  40.                              </Grid.ColumnDefinitions>  
  41.                              <StackPanel Grid.Column="0" HorizontalAlignment="Left" Orientation="Horizontal">  
  42.                                  <TextBlock Text="订购时间:"/>  
  43.                                  <TextBlock x:Name="orderDate" Text="2012-01-02"/>  
  44.                              </StackPanel>  
  45.                              <StackPanel Grid.Column="1" HorizontalAlignment="Left" Orientation="Horizontal">  
  46.                                  <TextBlock Text="生效时间:"/>  
  47.                                  <TextBlock x:Name="effectiveDate" Text="2012-01-02"/>  
  48.                              </StackPanel>  
  49.                              <StackPanel Grid.Column="2" HorizontalAlignment="Left" Orientation="Horizontal">  
  50.                                  <TextBlock Text="失效时间:"/>  
  51.                                  <TextBlock x:Name="overdueDate" Text="2012-01-02"/>  
  52.                              </StackPanel>  
  53.                          </Grid>  
  54.                      </Grid>  
  55.                  </Grid>  
  56.              </DataTemplate>  
  57.          </ListView.ItemTemplate>  
  58.      </ListView>  
                   <ListView x:Name="busGridView" SelectionMode="Single"
                        AutomationProperties.AutomationId="ItemGridView" Grid.Row="1"
                          AllowDrop="True" CanDragItems="True"  CanReorderItems="True" ScrollViewer.HorizontalScrollBarVisibilit                          y="Disabled">
                            <ListView.ItemTemplate>
                                <DataTemplate>
                                    <Grid Background="Wheat">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="98"/>
                                        </Grid.RowDefinitions>
                                        <Grid Background="#C5D600" Grid.Row="0" Opacity="0.26" Width="630" HorizontalAlignment="                                              Left" VerticalAlignment="Top"/>
                                        <Grid Grid.Row="0">
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="58"/>
                                                <RowDefinition Height="40"/>
                                            </Grid.RowDefinitions>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="36"/>
                                                <ColumnDefinition/>
                                                <ColumnDefinition Width="40"/>
                                            </Grid.ColumnDefinitions>
                                            <Grid Grid.Row="0" Grid.Column="1" Margin="0,22,0,18">
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="2*"/>
                                                    <ColumnDefinition Width="1*"/>
                                                </Grid.ColumnDefinitions>
                                                <StackPanel Grid.Column="0" HorizontalAlignment="Left" Orientation="Horizontal">
                                                    <TextBlock Text="名称:"/>
                                                    <TextBlock x:Name="businessName" Text="{Binding Title}"/>
                                                </StackPanel>
                                                <StackPanel Grid.Column="1" HorizontalAlignment="Left" Orientation="Horizontal">
                                                    <TextBlock Text="费用:"/>
                                                    <TextBlock x:Name="businessPrice"  Text="{Binding Title}"/>
                                                </StackPanel>
                                            </Grid>
                                            <Grid Grid.Row="1" Grid.Column="1" Margin="0,0,0,22">
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                </Grid.ColumnDefinitions>
                                                <StackPanel Grid.Column="0" HorizontalAlignment="Left" Orientation="Horizontal">
                                                    <TextBlock Text="订购时间:"/>
                                                    <TextBlock x:Name="orderDate" Text="2012-01-02"/>
                                                </StackPanel>
                                                <StackPanel Grid.Column="1" HorizontalAlignment="Left" Orientation="Horizontal">
                                                    <TextBlock Text="生效时间:"/>
                                                    <TextBlock x:Name="effectiveDate" Text="2012-01-02"/>
                                                </StackPanel>
                                                <StackPanel Grid.Column="2" HorizontalAlignment="Left" Orientation="Horizontal">
                                                    <TextBlock Text="失效时间:"/>
                                                    <TextBlock x:Name="overdueDate" Text="2012-01-02"/>
                                                </StackPanel>
                                            </Grid>
                                        </Grid>
                                    </Grid>
                                </DataTemplate>
                            </ListView.ItemTemplate>
                        </ListView>

这个时候,ListView的Item布局文件中是没有加Style的,使用的是系统默认的style,下面我们给ListView的Item添加一个Style属性,并修改Style中的一些关键部分,这样就能得到我们第二张图中的效果。如果以前有做过Android开发的,可能这一块理解起来会比较快。

2)更改后的样式,先上ListView的代码:

  1. <ListView x:Name="busGridView" SelectionMode="Single"  
  2. AutomationProperties.AutomationId="ItemGridView" Grid.Row="1" ItemContainerStyle="{StaticResource ListVi                         ewItemStyle1}"  
  3.   AllowDrop="True" CanDragItems="True"  CanReorderItems="True" ScrollViewer.HorizontalScrollBarVisibilit                          y="Disabled">  
  4.     <ListView.ItemTemplate>  
  5.         <DataTemplate>  
  6.             <Grid Background="Wheat">  
  7.                 <Grid.RowDefinitions>  
  8.                     <RowDefinition Height="98"/>  
  9.                 </Grid.RowDefinitions>  
  10.                 <Grid Background="#C5D600" Grid.Row="0" Opacity="0.26" Width="630" HorizontalAlignment="                                              Left" VerticalAlignment="Top"/>  
  11.                 <Grid Grid.Row="0">  
  12.                     <Grid.RowDefinitions>  
  13.                         <RowDefinition Height="58"/>  
  14.                         <RowDefinition Height="40"/>  
  15.                     </Grid.RowDefinitions>  
  16.                     <Grid.ColumnDefinitions>  
  17.                         <ColumnDefinition Width="36"/>  
  18.                         <ColumnDefinition/>  
  19.                         <ColumnDefinition Width="40"/>  
  20.                     </Grid.ColumnDefinitions>  
  21.                     <Grid Grid.Row="0" Grid.Column="1" Margin="0,22,0,18">  
  22.                         <Grid.ColumnDefinitions>  
  23.                             <ColumnDefinition Width="2*"/>  
  24.                             <ColumnDefinition Width="1*"/>  
  25.                         </Grid.ColumnDefinitions>  
  26.                         <StackPanel Grid.Column="0" HorizontalAlignment="Left" Orientation="Horizontal">  
  27.                             <TextBlock Text="名称:"/>  
  28.                             <TextBlock x:Name="businessName" Text="{Binding Title}"/>  
  29.                         </StackPanel>  
  30.                         <StackPanel Grid.Column="1" HorizontalAlignment="Left" Orientation="Horizontal">  
  31.                             <TextBlock Text="费用:"/>  
  32.                             <TextBlock x:Name="businessPrice"  Text="{Binding Title}"/>  
  33.                         </StackPanel>  
  34.                     </Grid>  
  35.                     <Grid Grid.Row="1" Grid.Column="1" Margin="0,0,0,22">  
  36.                         <Grid.ColumnDefinitions>  
  37.                             <ColumnDefinition Width="*"/>  
  38.                             <ColumnDefinition Width="*"/>  
  39.                             <ColumnDefinition Width="*"/>  
  40.                         </Grid.ColumnDefinitions>  
  41.                         <StackPanel Grid.Column="0" HorizontalAlignment="Left" Orientation="Horizontal">  
  42.                             <TextBlock Text="订购时间:"/>  
  43.                             <TextBlock x:Name="orderDate" Text="2012-01-02"/>  
  44.                         </StackPanel>  
  45.                         <StackPanel Grid.Column="1" HorizontalAlignment="Left" Orientation="Horizontal">  
  46.                             <TextBlock Text="生效时间:"/>  
  47.                             <TextBlock x:Name="effectiveDate" Text="2012-01-02"/>  
  48.                         </StackPanel>  
  49.                         <StackPanel Grid.Column="2" HorizontalAlignment="Left" Orientation="Horizontal">  
  50.                             <TextBlock Text="失效时间:"/>  
  51.                             <TextBlock x:Name="overdueDate" Text="2012-01-02"/>  
  52.                         </StackPanel>  
  53.                     </Grid>  
  54.                 </Grid>  
  55.             </Grid>  
  56.         </DataTemplate>  
  57.     </ListView.ItemTemplate>  
  58. </ListView>  
                        <ListView x:Name="busGridView" SelectionMode="Single"
                        AutomationProperties.AutomationId="ItemGridView" Grid.Row="1" ItemContainerStyle="{StaticResource ListVi                         ewItemStyle1}"
                          AllowDrop="True" CanDragItems="True"  CanReorderItems="True" ScrollViewer.HorizontalScrollBarVisibilit                          y="Disabled">
                            <ListView.ItemTemplate>
                                <DataTemplate>
                                    <Grid Background="Wheat">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="98"/>
                                        </Grid.RowDefinitions>
                                        <Grid Background="#C5D600" Grid.Row="0" Opacity="0.26" Width="630" HorizontalAlignment="                                              Left" VerticalAlignment="Top"/>
                                        <Grid Grid.Row="0">
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="58"/>
                                                <RowDefinition Height="40"/>
                                            </Grid.RowDefinitions>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="36"/>
                                                <ColumnDefinition/>
                                                <ColumnDefinition Width="40"/>
                                            </Grid.ColumnDefinitions>
                                            <Grid Grid.Row="0" Grid.Column="1" Margin="0,22,0,18">
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="2*"/>
                                                    <ColumnDefinition Width="1*"/>
                                                </Grid.ColumnDefinitions>
                                                <StackPanel Grid.Column="0" HorizontalAlignment="Left" Orientation="Horizontal">
                                                    <TextBlock Text="名称:"/>
                                                    <TextBlock x:Name="businessName" Text="{Binding Title}"/>
                                                </StackPanel>
                                                <StackPanel Grid.Column="1" HorizontalAlignment="Left" Orientation="Horizontal">
                                                    <TextBlock Text="费用:"/>
                                                    <TextBlock x:Name="businessPrice"  Text="{Binding Title}"/>
                                                </StackPanel>
                                            </Grid>
                                            <Grid Grid.Row="1" Grid.Column="1" Margin="0,0,0,22">
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                </Grid.ColumnDefinitions>
                                                <StackPanel Grid.Column="0" HorizontalAlignment="Left" Orientation="Horizontal">
                                                    <TextBlock Text="订购时间:"/>
                                                    <TextBlock x:Name="orderDate" Text="2012-01-02"/>
                                                </StackPanel>
                                                <StackPanel Grid.Column="1" HorizontalAlignment="Left" Orientation="Horizontal">
                                                    <TextBlock Text="生效时间:"/>
                                                    <TextBlock x:Name="effectiveDate" Text="2012-01-02"/>
                                                </StackPanel>
                                                <StackPanel Grid.Column="2" HorizontalAlignment="Left" Orientation="Horizontal">
                                                    <TextBlock Text="失效时间:"/>
                                                    <TextBlock x:Name="overdueDate" Text="2012-01-02"/>
                                                </StackPanel>
                                            </Grid>
                                        </Grid>
                                    </Grid>
                                </DataTemplate>
                            </ListView.ItemTemplate>
                        </ListView>

大家发现了吧,其实ListView代码整体都没有变化,就多了一句ItemContainerStyle="{StaticResource ListViewItemStyle1}",即给ListView的Item添加样式。

样式的代码如下,改的部分在代码中做了详细的标注:

		<Style x:Key="ListViewItemStyle1" TargetType="ListViewItem">
			<Setter Property="FontFamily" Value="{StaticResource ContentControlThemeFontFamily}"/>
			<Setter Property="FontSize" Value="{StaticResource ControlContentThemeFontSize}"/>
			<Setter Property="Background" Value="Transparent"/>
			<Setter Property="TabNavigation" Value="Local"/>
			<Setter Property="IsHoldingEnabled" Value="True"/>
            <!--修改每个Item间的间距,这边我是将原来默认的0,0,18,2改成了下面的0,0,18,20-->
			<Setter Property="Margin" Value="0,0,18,20"/>
			<Setter Property="HorizontalContentAlignment" Value="Left"/>
			<Setter Property="VerticalContentAlignment" Value="Top"/>
			<Setter Property="Template">
				<Setter.Value>
					<ControlTemplate TargetType="ListViewItem">
						<Border x:Name="OuterContainer">
							<VisualStateManager.VisualStateGroups>
								<VisualStateGroup x:Name="CommonStates">
									<VisualState x:Name="Normal"/>
                                    <!--鼠标移到listview的item的效果 -->
									<VisualState x:Name="PointerOver">
										<Storyboard>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PointerOverBorder"/>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SelectionBackground">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListViewItemSelectedPointerOverBackgroundThemeBrush}"/>
											</ObjectAnimationUsingKeyFrames>
                                            <!--选中框的颜色效果,这里我将value修改成了Red-->
											<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Stroke" Storyboard.TargetName="SelectedBorder">
												<DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
											</ObjectAnimationUsingKeyFrames>
                                            <!--选中框右边三角的颜色,这里我将value修改成了Red-->
											<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SelectedEarmark">
                                                <DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="Pressed">
										<Storyboard>
											<PointerDownThemeAnimation TargetName="ContentContainer"/>
										</Storyboard>
									</VisualState>
                                    <!--鼠标按下时listview中item的效果-->
									<VisualState x:Name="PointerOverPressed">
										<Storyboard>
											<PointerDownThemeAnimation TargetName="ContentContainer"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PointerOverBorder"/>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SelectionBackground">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListViewItemSelectedPointerOverBackgroundThemeBrush}"/>
											</ObjectAnimationUsingKeyFrames>
                                            <!--选中框的颜色效果,这里我将value改成了Red-->
											<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Stroke" Storyboard.TargetName="SelectedBorder">
												<DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
											</ObjectAnimationUsingKeyFrames>
                                            <!--选中框右边三角的颜色,这里我将value改成了Red-->
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SelectedEarmark">
                                                <DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="Disabled">
										<Storyboard>
											<DoubleAnimation Duration="0" To="{StaticResource ListViewItemDisabledThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="contentPresenter"/>
										</Storyboard>
									</VisualState>
								</VisualStateGroup>
								<VisualStateGroup x:Name="FocusStates">
									<VisualState x:Name="Focused">
										<Storyboard>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisual"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="Unfocused"/>
									<VisualState x:Name="PointerFocused"/>
								</VisualStateGroup>
								<VisualStateGroup x:Name="SelectionHintStates">
									<VisualStateGroup.Transitions>
										<VisualTransition GeneratedDuration="0:0:0.65" To="NoSelectionHint"/>
									</VisualStateGroup.Transitions>
									<VisualState x:Name="VerticalSelectionHint">
										<Storyboard>
											<SwipeHintThemeAnimation ToHorizontalOffset="0" TargetName="SelectionBackground" ToVerticalOffset="15"/>
											<SwipeHintThemeAnimation ToHorizontalOffset="0" TargetName="ContentBorder" ToVerticalOffset="15"/>
											<SwipeHintThemeAnimation ToHorizontalOffset="0" TargetName="SelectedCheckMark" ToVerticalOffset="15"/>
											<DoubleAnimationUsingKeyFrames Duration="0:0:0.500" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HintGlyph">
												<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="0.5"/>
												<DiscreteDoubleKeyFrame KeyTime="0:0:0.500" Value="0"/>
											</DoubleAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="HorizontalSelectionHint">
										<Storyboard>
											<SwipeHintThemeAnimation ToHorizontalOffset="-23" TargetName="SelectionBackground" ToVerticalOffset="0"/>
											<SwipeHintThemeAnimation ToHorizontalOffset="-23" TargetName="ContentBorder" ToVerticalOffset="0"/>
											<SwipeHintThemeAnimation ToHorizontalOffset="-23" TargetName="SelectedCheckMark" ToVerticalOffset="0"/>
											<DoubleAnimationUsingKeyFrames Duration="0:0:0.500" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HintGlyph">
												<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="0.5"/>
												<DiscreteDoubleKeyFrame KeyTime="0:0:0.500" Value="0"/>
											</DoubleAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="NoSelectionHint"/>
								</VisualStateGroup>
								<VisualStateGroup x:Name="SelectionStates">
									<VisualState x:Name="UnselectedSwiping">
										<Storyboard>
											<DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectingGlyph"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HintGlyphBorder"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="Selecting">
										<Storyboard>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectionBackground"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedBorder"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectingGlyph"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HintGlyphBorder"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="Selected">
										<Storyboard>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectionBackground"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedBorder"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedCheckMark"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="SelectedSwiping">
										<Storyboard>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectionBackground"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedBorder"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedCheckMark"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="Unselecting">
										<Storyboard>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HintGlyphBorder"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="Unselected">
										<Storyboard>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HintGlyphBorder"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="SelectedUnfocused">
										<Storyboard>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectionBackground"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedBorder"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedCheckMark"/>
										</Storyboard>
									</VisualState>
								</VisualStateGroup>
								<VisualStateGroup x:Name="DragStates">
									<VisualStateGroup.Transitions>
										<VisualTransition GeneratedDuration="0:0:0.2" To="NotDragging"/>
									</VisualStateGroup.Transitions>
									<VisualState x:Name="NotDragging"/>
									<VisualState x:Name="Dragging">
										<Storyboard>
											<DoubleAnimation Duration="0" To="{StaticResource ListViewItemDragThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="InnerDragContent"/>
											<DragItemThemeAnimation TargetName="InnerDragContent"/>
											<FadeOutThemeAnimation TargetName="SelectedCheckMarkOuter"/>
											<FadeOutThemeAnimation TargetName="SelectedBorder"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="DraggingTarget">
										<Storyboard>
											<DropTargetItemThemeAnimation TargetName="OuterContainer"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="MultipleDraggingPrimary">
										<Storyboard>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="MultiArrangeOverlayBackground"/>
											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="MultiArrangeOverlayText"/>
											<DoubleAnimation Duration="0" To="{StaticResource ListViewItemDragThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ContentBorder"/>
											<FadeInThemeAnimation TargetName="MultiArrangeOverlayBackground"/>
											<FadeInThemeAnimation TargetName="MultiArrangeOverlayText"/>
											<DragItemThemeAnimation TargetName="ContentBorder"/>
											<FadeOutThemeAnimation TargetName="SelectionBackground"/>
											<FadeOutThemeAnimation TargetName="SelectedCheckMarkOuter"/>
											<FadeOutThemeAnimation TargetName="SelectedBorder"/>
											<FadeOutThemeAnimation TargetName="PointerOverBorder"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="MultipleDraggingSecondary">
										<Storyboard>
											<FadeOutThemeAnimation TargetName="ContentContainer"/>
										</Storyboard>
									</VisualState>
								</VisualStateGroup>
								<VisualStateGroup x:Name="ReorderHintStates">
									<VisualStateGroup.Transitions>
										<VisualTransition GeneratedDuration="0:0:0.2" To="NoReorderHint"/>
									</VisualStateGroup.Transitions>
									<VisualState x:Name="NoReorderHint"/>
									<VisualState x:Name="BottomReorderHint">
										<Storyboard>
											<DragOverThemeAnimation Direction="Bottom" ToOffset="{StaticResource ListViewItemReorderHintThemeOffset}" TargetName="ReorderHintContent"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="TopReorderHint">
										<Storyboard>
											<DragOverThemeAnimation Direction="Top" ToOffset="{StaticResource ListViewItemReorderHintThemeOffset}" TargetName="ReorderHintContent"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="RightReorderHint">
										<Storyboard>
											<DragOverThemeAnimation Direction="Right" ToOffset="{StaticResource ListViewItemReorderHintThemeOffset}" TargetName="ReorderHintContent"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="LeftReorderHint">
										<Storyboard>
											<DragOverThemeAnimation Direction="Left" ToOffset="{StaticResource ListViewItemReorderHintThemeOffset}" TargetName="ReorderHintContent"/>
										</Storyboard>
									</VisualState>
								</VisualStateGroup>
								<VisualStateGroup x:Name="DataVirtualizationStates">
									<VisualState x:Name="DataAvailable"/>
									<VisualState x:Name="DataPlaceholder">
										<Storyboard>
											<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="PlaceholderTextBlock">
												<DiscreteObjectKeyFrame KeyTime="0">
													<DiscreteObjectKeyFrame.Value>
														<Visibility>Visible</Visibility>
													</DiscreteObjectKeyFrame.Value>
												</DiscreteObjectKeyFrame>
											</ObjectAnimationUsingKeyFrames>
											<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="PlaceholderRect">
												<DiscreteObjectKeyFrame KeyTime="0">
													<DiscreteObjectKeyFrame.Value>
														<Visibility>Visible</Visibility>
													</DiscreteObjectKeyFrame.Value>
												</DiscreteObjectKeyFrame>
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
								</VisualStateGroup>
							</VisualStateManager.VisualStateGroups>
                            <!--选中等效果设置,这边是重点,认真看代码,其实你就会发现,下面即是每个Item的组成部分-->
							<Grid x:Name="ReorderHintContent" Background="Transparent">
								<Path x:Name="SelectingGlyph" Data="F1 M133.1,17.9 L137.2,13.2 L144.6,19.6 L156.4,5.8 L161.2,9.9 L145.6,28.4 z" Fill="{StaticResource ListViewItemCheckSelectingThemeBrush}" FlowDirection="LeftToRight" HorizontalAlignment="Right" Height="13" Margin="0,0,0,0" Opacity="0" Stretch="Fill" VerticalAlignment="Top" Width="15"/>
								<Border x:Name="ContentContainer">
									<Grid x:Name="InnerDragContent">
										<Border x:Name="HintGlyphBorder" HorizontalAlignment="Right" Height="40" Margin="4" Opacity="0" VerticalAlignment="Top" Width="40">
											<Path x:Name="HintGlyph" Data="F1 M133.1,17.9 L137.2,13.2 L144.6,19.6 L156.4,5.8 L161.2,9.9 L145.6,28.4 z" Fill="{StaticResource ListViewItemCheckHintThemeBrush}" FlowDirection="LeftToRight" HorizontalAlignment="Right" Height="13" Margin="0,0,0,0" Opacity="0" Stretch="Fill" VerticalAlignment="Top" Width="15"/>
										</Border>
										<Rectangle x:Name="PointerOverBorder" Fill="{StaticResource ListViewItemPointerOverBackgroundThemeBrush}" IsHitTestVisible="False" Margin="1" Opacity="0"/>
										<Rectangle x:Name="FocusVisual" IsHitTestVisible="False" Opacity="0" Stroke="{StaticResource ListViewItemFocusBorderThemeBrush}" StrokeThickness="2"/>
										<!--选中鼠标离开后listview的item蒙板的颜色,这里将Fill修改成了Red-->
                                        <Rectangle x:Name="SelectionBackground" Fill="Red" Margin="4" Opacity="0"/>
										<Border x:Name="ContentBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Margin="5">
											<Grid>
												<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
												<TextBlock x:Name="PlaceholderTextBlock" Foreground="{x:Null}" IsHitTestVisible="False" Margin="{TemplateBinding Padding}" Opacity="0" Text="Xg"/>
												<Rectangle x:Name="PlaceholderRect" Fill="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" IsHitTestVisible="False" Visibility="Collapsed"/>
												<!--listview的item选中框颜色,这里将stroke修改成了Red-->
                                                <Rectangle x:Name="SelectedBorder" IsHitTestVisible="False" Opacity="0" Stroke="Red" StrokeThickness="{StaticResource ListViewItemSelectedBorderThemeThickness}"/>
												<Rectangle x:Name="MultiArrangeOverlayBackground" Fill="{StaticResource ListViewItemDragBackgroundThemeBrush}" IsHitTestVisible="False" Opacity="0"/>
											</Grid>
										</Border>
										<Border x:Name="SelectedCheckMarkOuter" HorizontalAlignment="Right" IsHitTestVisible="False" Margin="4" Padding="{TemplateBinding BorderThickness}" VerticalAlignment="Top">
											<Grid x:Name="SelectedCheckMark" Height="40" Opacity="0" Width="40" >
                                                <!--listview的item选中效果中右边三角型颜色,这里将Fill修改成了Red-->
												<Path x:Name="SelectedEarmark" Data="M0,0 L40,0 L40,40 z" Fill="Red" Stretch="Fill"/>
                                                <!--listview的item选中效果中勾的颜色-->
												<Path Data="F1 M133.1,17.9 L137.2,13.2 L144.6,19.6 L156.4,5.8 L161.2,9.9 L145.6,28.4 z" Fill="{StaticResource ListViewItemCheckThemeBrush}" FlowDirection="LeftToRight" HorizontalAlignment="Right" Height="13" Margin="0,5.5,5.5,0" Stretch="Fill" VerticalAlignment="Top" Width="15"/>
											</Grid>
										</Border>
										<TextBlock x:Name="MultiArrangeOverlayText" Foreground="{StaticResource ListViewItemDragForegroundThemeBrush}" FontSize="26.667" FontFamily="{StaticResource ContentControlThemeFontFamily}" IsHitTestVisible="False" Margin="18,9,0,0" Opacity="0" TextWrapping="Wrap" Text="{Binding TemplateSettings.DragItemsCount, RelativeSource={RelativeSource Mode=TemplatedParent}}" TextTrimming="WordEllipsis"/>
									</Grid>
								</Border>
							</Grid>
						</Border>
					</ControlTemplate>
				</Setter.Value>
			</Setter>
		</Style>


ok,改完后,运行下,大功告成!是不是发现其实也没那么难!

转自:http://blog.youkuaiyun.com/hyr83960944/article/details/7950717

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值