WP8.1开发中ListView控件加载图列表的简单使用(1)

我也是刚接触WP编程没几个月,就是在这段时间一直闲着没事,然后又比较喜欢WP这款系统,就学习了WP这方面的开发言语,自学是很困难的,掌握这方面的资料不多,很初级,就是自己在网上找资料学习过程中,看到别人的分享让我学到了很多,所以我也想分享一下自己的经验,另一方面也希望和大家交流交流,并得到大家的指点。

好了,不多说了,现在开始进入正题吧:

ListView这个控件用的很多,而且功能很强大,在我练习开发两个小软件的之前,我以为很简单没什么内容,谁知在开发过程中,才知道它的功能之多,现在就简单说其中的一个功能:加载显示列表图片;

先上Page上的 XAML代码:

<Page
    x:Class="圣经故事1.BlankPage1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:圣经故事1"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>

        <!--<Grid.Resources></Grid.Resources>之间注册要绑定的数据-->
        <Grid.Resources>
            <CollectionViewSource x:Name="itemcollectionSource" IsSourceGrouped="True" ItemsPath="DirNameList"/><!--ItemsPath=我一直没怎么搞懂,在这里这个可不要,没什么用-->
        </Grid.Resources>
<!--<ScrollViewer><ScrollViewer.Content></ScrollViewer.Content></ScrollViewer>在之间的ListView控件上加滚动条-->
        <ScrollViewer>
            <ScrollViewer.Content>

                    <StackPanel>
                        <ListView x:Name="lv" ItemsSource="{Binding Source={StaticResource itemcollectionSource}}">
                            <ListView.GroupStyle>
                                <GroupStyle x:Name="gs">
                                    <GroupStyle.HeaderTemplate>
                                        <DataTemplate>
                                            <StackPanel Orientation="Horizontal">
                                                <Image x:Name="im1"  Source="{Binding Path=DirectoryImageSource}" Height="240" Width="240" Stretch="Uniform"/>
                                                <StackPanel>
                                                    <TextBlock x:Name="te1" Text="{Binding Path=DirectoryName}" />
                                                </StackPanel>
                                            </StackPanel>

                                        </DataTemplate>
                                    </GroupStyle.HeaderTemplate>
                                </GroupStyle>
                            </ListView.GroupStyle>
                        </ListView>
                    </StackPanel>

            </ScrollViewer.Content>
        </ScrollViewer>

    </Grid>
</Page>

然后再写一个Model类(当然也可以写成自动属性,我习惯这样写;MVVM架构中的M):

  public class DirectoryModel
    {
        private string _directoryName;
        public string DirectoryName//图片名称的属性
        {
            get { return _directoryName; }
            set { _directoryName = value; }
        }

        private string _directoryImageSource;
        public string DirectoryImageSource//图片路径的属性
        {
            get { return _directoryImageSource; }
            set { _directoryImageSource = value; }
        }
    }

再建一个ViewModel类(MVVM架构中的VM):

   class DirectoryViewModel
    {

        private ObservableCollection<DirectoryModel> _dirNameList = new ObservableCollection<DirectoryModel>();
        public ObservableCollection<DirectoryModel> DirNameList
        {
            get { return _dirNameList; }
            set { _dirNameList=value; }
        }
        public DirectoryViewModel()
        { }
        public DirectoryViewModel( ObservableCollection<DirectoryModel> list1)
        {
            this.DirNameList = list1;
        }

    }

最后是后台代码了:

 public BlankPage1()
        {
            this.InitializeComponent();
 ObservableCollection<DirectoryModel> dnmList = new ObservableCollection<DirectoryModel>()//这里用ObservableCollection<T>集合,是因为它能实时更改数据,//且在加载大量数据时能实时加载,不是一次加载完,比如300张图片它可能加载50张,当你在下拉过程中实时更并加载其它的图片;        {            new DirectoryModel() { DirectoryImageSource="Assets/DirectoryImages/1.jpg", DirectoryName="asdfaf"},            new DirectoryModel() { DirectoryImageSource="Assets/DirectoryImages/2.jpg", DirectoryName="fffffffffffff" },            new DirectoryModel() { DirectoryImageSource="Assets/DirectoryImages/3.jpg", DirectoryName="aaaaaaaaaasfsaf" },            new DirectoryModel() { DirectoryImageSource="Assets/DirectoryImages/4.jpg", DirectoryName="aaaaaaaaaasfsaf" },        };

DirectoryViewModel dvm= new DirectoryViewModel(dnmList); //对dvm进行实例化
            this.itemcollectionSource.Source =dvm.DirNameList;//将dvm的集合属性绑定到资源当中
        }

好了,这样就完成了,上一张效果图:

我现在也在学习当中,一直在练习MVVM架构及LISTVIEW这方面数据绑定,理解不是太好,如果有哪错误或不合适的地方请各位指正,

时间: 2024-10-03 22:40:00

WP8.1开发中ListView控件加载图列表的简单使用(1)的相关文章

[转]Delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法

procedure TForm1.Button1Click(Sender: TObject); var jpg: TJPEGImage; // 要use Jpeg单元 begin // 显示jpg大图片的方式 jpg := TJPEGImage.Create; jpg.LoadFromFile(getcurrentdir() + '\pic.jpg'); Image1.Picture.Bitmap.Assign(jpg); // 因为 img 控件是基于bmp的 jpg.Free; end; p

虚拟列表控件---加载大数据行

虚拟列表控件---加载大数据行 平常所用到的列ListView/ListCtrl控件,都是只有行至几百行数据,直至今日,在项目中遇到了上10W量级数据条,终于感觉到普通加载的艰辛,遂到网上乱找一通,发现大同小异,转载了这篇比较详细的,后面代码所用到的m_Items,为存放的列表的数据结构列表, 这篇文章虽详尽,改日做一个DEMO, Demo 一.什么是虚拟列表控件 虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件.. 二.为什么使用虚拟列表控件 我们知道,通常使用列表控件CListC

C#窗体加载和控件加载不同步导致控件闪烁

窗体加载和控件加载不同步导致的控件闪烁现象:// 代码块加在父窗体中的任意位置,解决窗体加载和控件加载不同步导致的控件闪烁问题        protected override CreateParams CreateParams        {            get            {                CreateParams cp = base.CreateParams;                cp.ExStyle |= 0x02000000;     

asp.net:easyui tree控件加载url数据

easyui tree控件加载url数据 建表 CREATE TABLE [dbo].[OrganizationStructure]( [Id] [int] IDENTITY(1,1) NOT NULL, [OwnerId] [int] NOT NULL, [Name] [nvarchar](100) NOT NULL, [Type] [int] NULL, CONSTRAINT [PK_OrganizationStructure] PRIMARY KEY CLUSTERED ( [Name]

【2017-04--28】Winform中ListView控件

ListView控件是一个winform自带的表格型的应用数据展示控件 1.先设置列,设置视图属性选择Details. 添加列,修改列名. 2.编辑项(添加行数据) 添加一个ListViewItem对象,该对象的Text对应着是第一列的数据, 在该对象的SubItems属性的集合中设置该行数据后面几列的值. 3.ListView属性 - Columns 列的集合 - Items 行数据的集合 - FullRowSelect  满行选中 - MultiSelect   是否允许选择多项 - Hid

Android开发:ListView控件:给Item绑定了点击事件,却点击无效

一.问题引入 ListView控件:给Item绑定了点击事件,却点击无效. 二.解决方案 ListView使用了自定义布局文件,在布局文件中有button等控件时,这些控件获取焦点的级别比listView的item高,所以当点击item时,button等控件会优先获得点击焦点. 解决方法就是在布局文件根元素中添加属性: android:descendantFocusability="blocksDescendants" android:descendantFocusability De

C# winform项目中ListView控件使用CheckBoxes属性实现单选功能

在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes和点击选中CheckBoxes时自动显示正行选中状态的单选功能. 效果图: 主要利用两个事件:listView1_ItemCheck和listView1_SelectedIndexChanged事件. 上代码: [csharp] view plain copy print? private void listView1_ItemCheck(object sender, ItemChec

Android中ListView上拉加载更多及下拉刷新

做几乎每一个Android应用开发,都少不了用到一个控件,那就是ListView,用于加载多条数据,并用一定的样式展示出来.但是为了性能问题(一次性加载太多数据,比如100000条,耗费时间长,消耗资源多等)及用户体验问题(比如用户只想看最新的10条数据,结果一下子把所有的上万条数据都加载了,不方便用户选择)等原因,所以我们要把ListView的数据进行分页加载,常用的就是ListView的上拉加载更多及下拉刷新最新数据. 我们可以自己封装一个带上下拉功能的ListView,通常就是加上头部He

OA系统信用盘新增三个极速彩版本Anroid中ListView实现分页加载

1.需要开启权限,AndroidManifest.xml文件中 OA系统信用盘新增三个极速彩版本  下载地址  QQ2952777280 <uses-permission android:name="android.permission.INTERNET"/>   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 2.activity_mai