win8中ListView、GridView、ListBox如何更改Item的背景色、间距之类等? .
2014-11-10 10:25
519 查看
很久没有写一些文章了,总的来说就是懒,其实有很多东西都想拿出来分享,但是就是有时候懒得写。
今天我们来说win8中ListView、GridView、ListBox这几个控件如何更改Item的样式,即按照你想要的效果来进行显示。
这里以ListView为例来进行介绍,GridView、ListBox其实是一样的。先上图:
下面这一幅图是系统默认的效果,系统默认的选中效果背景都是蓝色:
更改样式后的效果:
大家有没有发现更改后的样式每个Item的间距变大了,而且选中框的颜色也变成了红色。具体是怎么实现的,我们一步一步来进行。
第一步:首先建立一个Win Store的Blank项目,当然你不建立Blank,建立Grid或者其他的都行。
第二步:选择某一页面,如果是做demo的话,可以直接选择mainpage来建立GridView,这里分两部分来说
1):系统默认的样式,代码如下:
[html]
view plaincopyprint?
<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的代码:
[html]
view plaincopyprint?
<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添加样式。
样式的代码如下,改的部分在代码中做了详细的标注:
ok,改完后,运行下,大功告成!是不是发现其实也没那么难!
转自:/article/1569478.html
今天我们来说win8中ListView、GridView、ListBox这几个控件如何更改Item的样式,即按照你想要的效果来进行显示。
这里以ListView为例来进行介绍,GridView、ListBox其实是一样的。先上图:
下面这一幅图是系统默认的效果,系统默认的选中效果背景都是蓝色:
更改样式后的效果:
大家有没有发现更改后的样式每个Item的间距变大了,而且选中框的颜色也变成了红色。具体是怎么实现的,我们一步一步来进行。
第一步:首先建立一个Win Store的Blank项目,当然你不建立Blank,建立Grid或者其他的都行。
第二步:选择某一页面,如果是做demo的话,可以直接选择mainpage来建立GridView,这里分两部分来说
1):系统默认的样式,代码如下:
[html]
view plaincopyprint?
<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 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的代码:
[html]
view plaincopyprint?
<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 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,改完后,运行下,大功告成!是不是发现其实也没那么难!
转自:/article/1569478.html
相关文章推荐
- win8中ListView、GridView、ListBox如何更改Item的背景色、间距之类等?
- win8中ListView、GridView、ListBox如何更改Item的背景色、间距之类等?
- ListView/GridView 更改选中时item背景色
- Android美工坊--listview更改选中时item背景色
- Android美工坊--listview更改选中时item背景色
- 《如何更改其他程序ListView控件中某个Item的内容》
- GridView的Item选中后,背景色会有变化,如何才能去除这个背景色呢,
- listview更改选中时item背景色
- listview更改选中时item背景色
- [VB.NET]listbox如何更改item高度?以及请教斑竹关于结帖子的事
- Android美工坊--listview更改选中时item背景色
- listview更改选中时item背景色
- listview更改选中时item背景色
- 如何更改GridView的item按下去的背景?
- Android美工坊--listview更改选中时item背景色
- 《如何更改其他程序ListView控件中某个Item的内容》 -- 天津 赵春生
- listview更改选中时item背景色的两种方式
- Listview gridview TV 焦点落在item上面修改背景色
- Android 实现ListView/GridView等中Item被单击后背景色保持高亮
- 更改listView每个item的间距