[WP8] ListBox的Item宽度自动填满
[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宽度自动填满的更多相关文章
- ext:grid分页,列宽度自动填满grid宽度
var cm = new Ext.grid.ColumnModel([{ header : '编号', dataIndex : 'id' }, { header ...
- css布局------左边宽度不定,右边宽度自动填满剩余空间
HTML <div class="container"> <div class="left"></div> <div ...
- li 水平排列并自动填满 ul
找了li 如何水平排列并自动填满 ul,同时 li 宽度平均?资料,里面有提到"请用js动态计算保证兼容性", 因为我想实现的是,水平滚动条,ul的上级div是固定的宽度1000p ...
- 两个DIV,左DIV宽度固定,右DIV自动填满剩余空间
<style type="text/css"> #main{ width:98%; } #sidebar{ float:left; width:200px; backg ...
- -webkit-box 高度自动填满
<style> .box{ display: -webkit-box; -webkit-box-orient: vertical; height: 200px; background: # ...
- 手机H5,用Jquery使图片自动填满两栏式排版
遇上这样的排版,手机的解象度都不同,假如只用CSS3根本就做不出这样的排版:因此要用Jquery. 1. HTML <div class="postImgCenterCrop" ...
- datagridview随窗体的大小而变,表格填满控件
在C#winform布局的时候,我们拖一个datagridview到窗体上面,将datagridview调整为适合窗体的大小,但是我们运行之后,点击最大化按钮的时候,却发现datagridview的大 ...
- image以最小边为标准填满正方形父级元素
需求: 上传图片并实现预览, 图片以最小边为标准填满正方形的父级div,且不变形,且点击可以预览大图. 有两种实现方式: 1.div+img标签, 利用object-fit:cover,据说兼容性不好 ...
- css圆,背景,img填满等样式
background 属性 属性值 描述 background-color 单词颜色表示法.rgb.十六进制 设置元素的背景颜色 background-image url('http://www.aa ...
随机推荐
- 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官.” 前言 这次泥瓦匠带来的是一个好玩的基于 JDK ...
- angularjs, nodejs, express, gulp, karma, jasmine 前端方案整合
今年转向做前端开发,主要是做angularjs开发,期间接触了nodejs平台,从此一发不可收拾. npm丰富的插件库,express 开发框架, grunt, gulp构建工具,karma测试管理工 ...
- 【Android】Handler、Looper源码分析
一.前言 源码分析使用的版本是 4.4.2_r1. Handler和Looper的入门知识以及讲解可以参考我的另外一篇博客:Android Handler机制 简单而言:Handler和Looper是 ...
- Fiddler捕捉ASP.NET WebSite调用WebService、WCF服务
Fiddler默认会注册一个代理,有时会发现WebSite调用的WebService或者WCF服务无法被捕捉到.其实是由于运行的站点关联的应用程序池使用的账号和我们当前登陆操作系统的用户不同,自然它们 ...
- C++的ORM工具比较
用过Java的都知道SSH框架,特别对于数据库开发,Java领域有无数的ORM框架,供数据持久层调用,如Hibernate,iBatis(现在改名叫MyBatis),TopLink,JDO,J ...
- MyBatis知多少(7)持久层
持久层是适合使用MyBatis的地方.在面向对象的系统中,持久层主要关注对象(或者更精确地说应该是存储在那些对象中的数据)的存取.在企业应用程序中持久层通常用关系数据库系统来存储数据,虽然某些情况下其 ...
- 手把手教你搭建LyncServer2013之部署及配置监控功能(十八)
自弃用监控服务器角色以来,已对 Microsoft Lync Server 2013 监控基础结构进行了重大更改.不再采用不同的监控服务器角色(通常需要组织设置专用计算机来充当监控服务器),现在监控服 ...
- 剑指架构师系列-Struts2的缓存
Struts2的缓存中最重要的两个类就是ReferenceMap与ReferenceCache.下面来解释下ReferenceCache中的get()方法. public V get(final Ob ...
- 如何自学Android--转
原文地址:http://blog.csdn.net/lavor_zl/article/details/51217319 1. Java知识储备 本知识点不做重点讲解: 对于有基础的同学推荐看<J ...
- C#加密类
var es= EncryptSugar.GetInstance(); string word = "abc"; var wordEncrypt = es.Encrypto(wor ...