zoukankan      html  css  js  c++  java
  • ItemTemplateSelector

    ItemTemplateSelector的中文翻译是模板选择器

    是用来选择模板。

    他的用法稍有不同,他必须派生于DataTemplateSelector类。

    然后重写SelectTemplate这个方法,方法内由两个参数,一是对象所绑定的数据,二是你绑定的元素。方法有返回类型为DataTemplate的,不过默认值为Null

    xaml则是通过绑定的方式。

    模板选择的用比较广。

     这里就介绍默认的使用方式。

    通过数据或者对象元素来选择模板

    选择器类

    using System.Windows;
    using System.Windows.Controls;
    
    namespace WinMenu
    {
        public class Select: DataTemplateSelector
        {
            private int i = 0;
            public override DataTemplate SelectTemplate(object item, DependencyObject container)
            {
                var u = container as FrameworkElement;
    
                i++;
    
                if (i % 2 == 0)
                    return u.FindResource("d1") as DataTemplate;
                else
                    return u.FindResource("d2") as DataTemplate;
        
                 
            }
        }
    }

    xaml代码:

     <Window.Resources>
            <local:Select  x:Key="sl2"/>
    
            <DataTemplate x:Key="d1">
                <Image x:Name="image" Height="150"  Width="300" Source="{Binding Image}"  />
            </DataTemplate>
            <DataTemplate x:Key="d2">
                <Image x:Name="image" Height="100" Width="100" Source="{Binding Image}"  />
            </DataTemplate>
            <Storyboard x:Key="S2">
                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" >
                    <EasingDoubleKeyFrame KeyTime="0" Value="30"/>
                    <EasingDoubleKeyFrame KeyTime="0" Value="30"/>
                    <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="-5"/>
                    <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
                </DoubleAnimationUsingKeyFrames>
                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" >
                    <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                    <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                    <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
                </DoubleAnimationUsingKeyFrames>
                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" >
                    <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                    <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                    <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
                </DoubleAnimationUsingKeyFrames>
            </Storyboard>
        </Window.Resources>
        <Grid>
            <ListBox ItemTemplateSelector="{StaticResource sl2}"  x:Name="ListBoxFile" Margin="0,0,0,119"   >
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
                <ListBox.ItemContainerStyle>
                    <Style  TargetType="ListBoxItem">
                        <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>
                </ListBox.ItemContainerStyle>
            </ListBox>
            <Button Click="Button_Click" Margin="451,321,0,0"/>
    
        </Grid>

    图片

  • 相关阅读:
    [Swift]LeetCode128. 最长连续序列 | Longest Consecutive Sequence
    [Swift]LeetCode126. 单词接龙 II | Word Ladder II
    [Swift]LeetCode127. 单词接龙 | Word Ladder
    [Xcode 实际操作]二、视图与手势-(6)给图像视图添加阴影效果
    [Swift]LeetCode124. 二叉树中的最大路径和 | Binary Tree Maximum Path Sum
    [Xcode 实际操作]二、视图与手势-(5)给图像视图添加圆角效果
    [Swift]LeetCode123. 买卖股票的最佳时机 III | Best Time to Buy and Sell Stock III
    [Swift]LeetCode120. 三角形最小路径和 | Triangle
    [Java]LeetCode117. 填充同一层的兄弟节点 II | Populating Next Right Pointers in Each Node II
    话说美国崛起
  • 原文地址:https://www.cnblogs.com/T-ARF/p/10488142.html
Copyright © 2011-2022 走看看