首页 > 学院 > 开发设计 > 正文

学习总结

2019-11-14 15:43:27
字体:
来源:转载
供稿:网友

最近在学习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下载地址


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表