Silverlight ListBox 横排显示并且自动换行
在开发一个Silverlight项目中想用listbox来做数据绑定,并且横排显示,找了好就都没有找到理想的代码,最后在Toolkit中的demo中找到了横排的源码,现在分享给大家,
也为自己以后使用做一次笔记。
使用横排并自动换行,一开始想用stackpanel来做Listbox的模板,横排了,但是它不能自动换行,很郁闷,都有自己重写一个Panel的想法,最后在toolKit 的demo中发现WrapPanel可以实现横排和自动换行的功能,这样就不怕数据绑定的时候数据较多的时候横排显示无法全部显示的问题了。废话不多说,自己贴代码:
<Style x:Key="WrapListBox" TargetType="ListBox"> <Setter Property="Background" Value="Transparent"></Setter> <Setter Property="ItemsPanel"> <Setter.Value> <ItemsPanelTemplate> <controlsToolkit:WrapPanel Orientation="Horizontal" /> </ItemsPanelTemplate> </Setter.Value> </Setter> <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"></Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate> <TextBox Text="{Binding MethodName}" Background="Transparent" Width="Auto"></TextBox> </ControlTemplate> </Setter.Value> </Setter> </Style>
使用WrapPanel 不要忘记引用 System.Windows.Controls.Toolkit这个dll就是SilverlightToolKit的dll,可以到codeplex.com 下载toolkit的源码和dll,
然后让ListBox的Style引用这个样式,可以后台绑定数据源实现自动横排和自动换行。其中这个style的Template是可以自己定义的,可以根据自己的数据模型自己定义显示的形式,这边只是提供一个简单的,可以灵活的使用,也可以不要这个Template,在Listbox中有一个DataTemplate也可以定义数据模板。
简单的说一下,如果有问题或者更好的建议可以分享一下