[WP8] ListBox的Item宽度自动填满

范例下载

范例程序代码:点此下载

问题情景

开发WP8应用程序的时候,常常会需要使用ListBox作为容器来呈现各种数据集合。但是在ListBox呈现数据时,ListBox中每个用来呈现数据的Item控件,在默认的状态下,宽度并不会填满整个ListBox。这样的默认样式,会因为Item控件的内容而动态的决定实际宽度,这很容易造成显示时排版不整齐,进而影响整体美观。

  • 执行结果

  • 程序代码(.XAML)

    <!--Resources-->
    <phone:PhoneApplicationPage.Resources> <!--TestTemplate-->
    <DataTemplate x:Key="TestDataTemplate">
    <Button Content="{Binding Path=Name}" Background="LightPink" />
    </DataTemplate> </phone:PhoneApplicationPage.Resources> <!--LayoutRoot-->
    <ListBox x:Name="ListBox001" ItemTemplate="{StaticResource TestDataTemplate}" Background="LightBlue"> </ListBox>
  • 程序代码(.CS)

    public class TestData
    {
    public string Name { get; set; }
    } public partial class MainPage : PhoneApplicationPage
    {
    // Constructors
    public MainPage()
    {
    // Initialize
    this.InitializeComponent(); // Data
    var dataList = new List<TestData>();
    dataList.Add(new TestData() { Name = "D1" });
    dataList.Add(new TestData() { Name = "D2222" });
    dataList.Add(new TestData() { Name = "D33" });
    dataList.Add(new TestData() { Name = "D444444" });
    dataList.Add(new TestData() { Name = "D5" });
    dataList.Add(new TestData() { Name = "D6" }); // Binding
    this.ListBox001.ItemsSource = dataList;
    }
    }

解决方案

解决方案很简单,只要照着下列范例的XAML内容,将ListBox中Item控件的HorizontalContentAlignment属性重新定义为Stretch,就可以让Item控件的宽度填满整个ListBox。

  • 执行结果

  • 程序代码(.XAML)

    <!--Resources-->
    <phone:PhoneApplicationPage.Resources> <!--TestTemplate-->
    <DataTemplate x:Key="TestDataTemplate">
    <Button Content="{Binding Path=Name}" Background="LightPink" />
    </DataTemplate> </phone:PhoneApplicationPage.Resources> <!--LayoutRoot-->
    <ListBox x:Name="ListBox001" ItemTemplate="{StaticResource TestDataTemplate}" Background="LightBlue"> <!--Style-->
    <ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    </Style>
    </ListBox.ItemContainerStyle> </ListBox>
  • 程序代码(.CS)

    public class TestData
    {
    public string Name { get; set; }
    } public partial class MainPage : PhoneApplicationPage
    {
    // Constructors
    public MainPage()
    {
    // Initialize
    this.InitializeComponent(); // Data
    var dataList = new List<TestData>();
    dataList.Add(new TestData() { Name = "D1" });
    dataList.Add(new TestData() { Name = "D2222" });
    dataList.Add(new TestData() { Name = "D33" });
    dataList.Add(new TestData() { Name = "D444444" });
    dataList.Add(new TestData() { Name = "D5" });
    dataList.Add(new TestData() { Name = "D6" }); // Binding
    this.ListBox001.ItemsSource = dataList;
    }
    }

[WP8] ListBox的Item宽度自动填满的更多相关文章

  1. ext:grid分页,列宽度自动填满grid宽度

    var cm = new Ext.grid.ColumnModel([{      header : '编号',      dataIndex : 'id'     }, {      header ...

  2. css布局------左边宽度不定,右边宽度自动填满剩余空间

    HTML <div class="container"> <div class="left"></div> <div ...

  3. li 水平排列并自动填满 ul

    找了li 如何水平排列并自动填满 ul,同时 li 宽度平均?资料,里面有提到"请用js动态计算保证兼容性", 因为我想实现的是,水平滚动条,ul的上级div是固定的宽度1000p ...

  4. 两个DIV,左DIV宽度固定,右DIV自动填满剩余空间

    <style type="text/css"> #main{ width:98%; } #sidebar{ float:left; width:200px; backg ...

  5. -webkit-box 高度自动填满

    <style> .box{ display: -webkit-box; -webkit-box-orient: vertical; height: 200px; background: # ...

  6. 手机H5,用Jquery使图片自动填满两栏式排版

    遇上这样的排版,手机的解象度都不同,假如只用CSS3根本就做不出这样的排版:因此要用Jquery. 1. HTML <div class="postImgCenterCrop" ...

  7. datagridview随窗体的大小而变,表格填满控件

    在C#winform布局的时候,我们拖一个datagridview到窗体上面,将datagridview调整为适合窗体的大小,但是我们运行之后,点击最大化按钮的时候,却发现datagridview的大 ...

  8. image以最小边为标准填满正方形父级元素

    需求: 上传图片并实现预览, 图片以最小边为标准填满正方形的父级div,且不变形,且点击可以预览大图. 有两种实现方式: 1.div+img标签, 利用object-fit:cover,据说兼容性不好 ...

  9. css圆,背景,img填满等样式

    background 属性 属性值 描述 background-color 单词颜色表示法.rgb.十六进制 设置元素的背景颜色 background-image url('http://www.aa ...

随机推荐

  1. 谷歌面经 Tree Serialization

    http://www.careercup.com/question?id=4868040812396544 You should transform an structure of multiple ...

  2. 微信、qq时间格式模板

    产品近来蛋疼,时间格式从做完到现在改了四遍了 ,最新的要求如下: * 2分钟内 无显示 * 2分钟-24小时 HH:mm * 昨天 昨天 HH:mm * 前天 前天 HH:mm * 今年 MM:DD ...

  3. 用户Word写毕业论文时的文献引用方法

    经过网上搜索和自己实践,找到了一种不用第三方工具的文献管理方法 通过将文献定义的成书签的形式,插入到文献中,当文献编号发生变化时,只需进行更新域操作,就可实现文献编号的理新,下面介绍具体方法: 1.首 ...

  4. NSDictionary 的有序性 (by the key in some rule)

    NSDictionary 的有序性: (by the key in some rule) NSDictionary*myDictionary =[NSDictionary dictionaryWith ...

  5. 【Android】Handler、Looper源码分析

    一.前言 源码分析使用的版本是 4.4.2_r1. Handler和Looper的入门知识以及讲解可以参考我的另外一篇博客:Android Handler机制 简单而言:Handler和Looper是 ...

  6. Linux高级编程--11.信号

    基本概念 信号在Linux中是一个比较常见的概念,例如我们按Ctrl+C中断前台进程,通过Kill命令结束进程都是通过信号实现的.下面就以Ctrl+C为例简单的说明信号的处理流程: 用户按下Ctrl- ...

  7. Unity 坐标系

    Unity 使用的是左手坐标系

  8. ruby -- 进阶学习(十五)friendly_id配置

    实现效果:http://127.0.0.1:3000/article/1  =>  http://127.0.0.1:3000/article/书名 (1)Rails 4.0的friendly_ ...

  9. 受限玻尔兹曼机(RBM)学习笔记(一)预备知识

    去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原 ...

  10. EPANET中读取INPUT文件的函数文件——INPUT1.C/INPUT2.C/INPUT3.C

    首先介绍下这3个文件的关系:可以说INPUT1.C的函数粒度最大,它的函数getdata()就完成了整个INPUT文件数据的读入,该函数又调用了INPUT2.C中的部分函数,INPUT2.C文件中的函 ...