[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. 批量Ping IP

    刚刚接触Python 想做点什么 听说Python 在网络方便很厉害 后来总结如下: 第一:发现公司都固定IP 每次新来同事都要猜一个没有人用的IP  很费劲 第二:我们公司有的IP可以上QQ 有的不 ...

  2. 为Ubuntu笔记本电脑设置WiFi热点共享上网

    该文由土木坛子转译而来,说是转译,其实看截图就可以方便的设置,没有任何命令,全是图形界面,方便容易.我们都知道怎样在 windows 7 系统上如何设计 Wifi 热点,当你只有一条网线,多台计算机的 ...

  3. mssql表名列名对应语句

    if exists (select * from tempdb..sysobjects where name like '#magic%') drop table #magic go select a ...

  4. EDM营销之双十一最新实战营销指南汇总

    双十一虽已进入第八个年头,但其影响力只增不减,倒计时期间商家们都已火力全开.再结合全社会消费升级的大背景,如何才能在激烈竞争中杀出一条血路呢? 本次Focussend基于实战操作,以短信营销.邮件营销 ...

  5. UVAoj 11324 - The Largest Clique(tarjan + dp)

    题意:给定一个有向图,寻找一个点数最大集合,使得这个集合中的任意两个点 u,v, 都有u->v 或者 v->u 或者u<==>v 思路:首先将强连通分量通过tarjan算法求出 ...

  6. 将XmlDocument转换成XDocument

    XmlDocument xml=new XmlDocument(); xml.LoadXml(strXmlText); XmlReader xr=new XmlNodeReader(xml); XDo ...

  7. linux 文件与进程

    1. linux查看一个文件正被那些程序使用 fuser -hUsage: fuser [-fMuvw] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIG ...

  8. HMM 自学教程(三)隐藏模式

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  9. Java 8的新并行API - 魅力与炫目背后

    这是一篇译文,原文链接见这里. 本文同时发表在ImportNew上,转载请注明出处. 我很擅长同时处理多项任务.就算是在写这篇博客的此刻,我仍然在为昨天在聚会上发表了一个让大家都感到诧异的评论而觉得尴 ...

  10. js-弹出窗口

    一.JS最常用三种弹出对话框 1.对话框 //弹出对话框并输出一段提示信息 function ale() { //弹出一个对话框 alert("提示信息!"); } 2.询问框 / ...