• 学习总结


    最近在学习win10开发UWP应用的时候遇到了一些问提,记录以作备用。

    1. listview可以通过ItemTemplateSelector来给listview显示不同的DataTemplate

    一个继承DataTemplateSelector的类,通过重写SelectTemplateCore的方法来指定不同的DataTemplate

    2.在DataTemplate里面使用x:bind的时候,必须在DataTemplate那里指定x:DataType,不然编译会报错

    3.listview的FooterTemplate和DataTemplate的内容所属的集合不一致,

    在赋值的时候,是这样赋值的

            //初始化数据,TemplateType=2的那一项是占位项,用来显示画线的那一项
            //SpView的那一项是listview的footitem的那一项
            public SpliteViewViewModel()
            {
                spHelper = new List<SpliteViewHelper>()
                {
                   new SpliteViewHelper() {SpliteviewName="标题1",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")) ,TemplateType=1},
                   new SpliteViewHelper() {SpliteviewName="标题2",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},
                   new SpliteViewHelper() {SpliteviewName="标题3",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},
                    new SpliteViewHelper() {SpliteviewName="标题1",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=2},
                   new SpliteViewHelper() {SpliteviewName="标题4",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},
                   new SpliteViewHelper() {SpliteviewName="标题5",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},
                };
                SpView = new SpliteViewHelper() { SpliteviewName = "底部标题", groupType = 1, SpIcon = new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")), TemplateType = 1 };
            }
    View Code

    在前台绑定也是不同的

    <ListView x:Name="SplitViewListView" SelectedItem="{Binding spviewmodel.selectitem}" ItemsSource="{Binding spviewmodel.spHelper}" Background="#372127" >
                        <Interactivity:Interaction.Behaviors>
                            <core:EventTriggerBehavior EventName="SelectionChanged">
                                <core:InvokeCommandAction Command="{Binding spviewmodel.SelectedCommand}" CommandParameter="{Binding ElementName=SplitViewListView,Path=SelectedItem}"/>
                            </core:EventTriggerBehavior>
                        </Interactivity:Interaction.Behaviors>
                        <ListView.ItemTemplateSelector>
                            <com:TemplateSelector  LineTemplate="{StaticResource LineTemplate}" NomalTemplate="{StaticResource NomalTemplate}"/>
                        </ListView.ItemTemplateSelector>
                        <ListView.FooterTemplate>
                            <DataTemplate >
                                <StackPanel  Orientation="Horizontal" Height="40" x:Name="footItem">
                                    <Interactivity:Interaction.Behaviors>
                                        <core:EventTriggerBehavior EventName="Tapped">
                                            <core:InvokeCommandAction Command="{Binding spviewmodel.SelectedCommand}" CommandParameter="{Binding ElementName=footItem}"/>
                                        </core:EventTriggerBehavior>
                                    </Interactivity:Interaction.Behaviors>
                                    <Image Source="{Binding spviewmodel.SpView.SpIcon}" Width="40" Height="40" VerticalAlignment="Center"/>
                                    <TextBlock Text="{Binding spviewmodel.SpView.SpliteviewName}" Foreground="White"></TextBlock>
                                </StackPanel>
                            </DataTemplate>
                        </ListView.FooterTemplate>
                    </ListView>
    View Code

    但是为什么绑定Command的时候是找得到同一个Command呢?

    还有一个问题listview的FooterTemplate怎么去选中呢

    4.UserControl通过 x:FieldModifier来控制访问权限

    5.splitview的DisplayMode决定了它的不同显示

    最近遇到了很多问题,写的很差,新手勿喷

    demo下载地址

  • 相关阅读:
    [C++]仿java.lang.String的字符串工具类[原]
    SQL基础1创建表、用户
    Linux中gdb 查看core堆栈信息
    Direct3D9基础工具类[原]
    eclipse3.4启动错误
    ndk连接第三方库
    数据库基本概念
    MySQL常见命令
    MySQL启动和停止
    MySQL配置文件
  • 原文地址:https://www.cnblogs.com/lj940306/p/4977788.html
Copyright © 2020-2023  润新知