ItemContainerStyleSelector是容器Style选择器

用法和ItemTemplateSelector差不多

同样也是也是继承类 StyleSelector,也是重写方法SelectStyle,参数都是一样的,一是数据,二是数据对象。返回值则是Style,默认值则是Null

XAML也是差不多的,同样使用绑定的语法

选择器类:

public class SelectOFStyle: StyleSelector
{
public int i = ;
public override Style SelectStyle(object item, DependencyObject container)
{
var u = container as FrameworkElement; i++; if (i % == )
return u.FindResource("St1") as Style;
else
return u.FindResource("St2") as Style;
}
}

xaml

 <Window.Resources>
<Storyboard x:Key="S2">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" >
<EasingDoubleKeyFrame KeyTime="" Value=""/>
<EasingDoubleKeyFrame KeyTime="" Value=""/>
<EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="-5"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.5" Value=""/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" >
<EasingDoubleKeyFrame KeyTime="" Value=""/>
<EasingDoubleKeyFrame KeyTime="" Value=""/>
<EasingDoubleKeyFrame KeyTime="0:0:0.5" Value=""/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" >
<EasingDoubleKeyFrame KeyTime="" Value=""/>
<EasingDoubleKeyFrame KeyTime="" Value=""/>
<EasingDoubleKeyFrame KeyTime="0:0:0.5" Value=""/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="S1">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" >
<EasingDoubleKeyFrame KeyTime="" Value=""/>
<EasingDoubleKeyFrame KeyTime="" Value=""/>
<EasingDoubleKeyFrame KeyTime="0:0:0.5" Value=""/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Style TargetType="ListBoxItem" x:Key="St1">
<Setter Property="RenderTransform" >
<Setter.Value>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Setter.Value>
</Setter>
<Style.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource S2}"/>
</EventTrigger>
</Style.Triggers>
</Style>
<Style TargetType="ListBoxItem" x:Key="St2">
<Setter Property="RenderTransform" >
<Setter.Value>
<TransformGroup>
<ScaleTransform/>
</TransformGroup>
</Setter.Value>
</Setter>
<Style.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource S1 }"/>
</EventTrigger>
</Style.Triggers>
</Style>
<local:Select x:Key="sl2"/>
<local:SelectOFStyle x:Key="sl1"/>
<DataTemplate x:Key="d1">
<Image x:Name="image" Height="" Width="" Source="{Binding Image}" />
</DataTemplate> <DataTemplate x:Key="d2">
<Image x:Name="image" Height="" Width="" Source="{Binding Image}" />
</DataTemplate> </Window.Resources>
<Grid>
<ListBox ItemTemplateSelector="{StaticResource sl2}" ItemContainerStyleSelector="{StaticResource sl1}" x:Name="ListBoxFile" Margin="0,0,0,119" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel> </ListBox>
<Button Click="Button_Click" Margin="451,321,0,0"/> </Grid>

图片效果

最新文章

  1. Git Stash紧急处理问题,需要切分支
  2. ArchLinux 安装笔记:续 --zz
  3. golang csv问题
  4. android 发短信
  5. EAX、ECX、EDX、EBX寄存器的作用
  6. 第2组UI组件:TextView及其子类
  7. iOS 开发中的单例
  8. jQuery包裹节点用法完整示例
  9. javascript事件详细说明
  10. 深入浅出数据结构C语言班(11)——简要介绍算法时间复杂度
  11. 深入设计电子计算器(一)——CPU指令集设计
  12. 安装基准测试工具sysbench
  13. re模块基本用法和字符集
  14. c/c++ 标准库 vector
  15. 个人阅读作业Week5
  16. 通过shell查找访问日志中访问量最大的ip
  17. CentOS 安装 Redis 笔记
  18. day05 可变不可变类型
  19. [Algorithm] Check if a binary tree is binary search tree or not
  20. Linux vi/vim替换命令的使用说明[转]

热门文章

  1. Redis作为缓存服务器
  2. zt对于C#中的FileUpload解决文件上传大小限制的问题设置
  3. 分别用js和css实现瀑布流
  4. 如何显示当前Mipmap级别?
  5. excel判断新增使用字典作为页面级数据库,减少io
  6. 基于CacheManager组件的缓存产品配置
  7. j中的substr(start,length)和substring(start,stop)
  8. 05 Computing GC Content
  9. wireshark问题
  10. javascript总结25:Array的5中迭代方法: every(), filter() , forEach() map() some()