当前位置:操作系统 > windows8 >>

新时尚Windows8开发(22):ListBox与ComboBox

这两个家伙,对我们来说,是绝对不陌生的,从WinForm到WPF,到Asp.net,我们都会接触到这两个控件,而且我相信我们也经常使用。

 

ListBox
先说ListBox,这个其实很简单,应该说,对于所有的集合控件,都是一样的使用方法,往里面放东西就两种途径:

1、数据绑定;

2、手动添加项。

而ListBox对应的项是ListBoxItem,说得更明白一些,它就是一个ContentControl,就像Button一样,都有一个Content属性,而我们就通过这个属性来设置项里面要显示的东西。对于数据绑定而言,因为是批量化的,所以,这个时候,我们就要用上DataTemplate了。

 

先来看看ListBox的数据绑定的例子。

[html]
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> 
    <ListBox x:Name="list" Width="365"/> 
</Grid> 

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <ListBox x:Name="list" Width="365"/>
    </Grid>
在代码视图中,我们在MainPage类的构造函数中设置数据源,其实就是设置它的ItemsSource属性。

[csharp]
public MainPage() 

    this.InitializeComponent(); 
 
    string[] items = { "夏", "商", "周", "春秋战国", "秦", "汉", "三国魏晋南北朝", "隋", "唐" }; 
    this.list.ItemsSource = items; 

        public MainPage()
        {
            this.InitializeComponent();

            string[] items = { "夏", "商", "周", "春秋战国", "秦", "汉", "三国魏晋南北朝", "隋", "唐" };
            this.list.ItemsSource = items;
        }
然后按下F5,你能看到以下的效果。

 \

 

可是,有时候,似乎只显示一个文本还不够,有可能我们用的数据源较为复杂。

好的,现在我们来伪造一些测试数据,先定义实体类。

[csharp]
public class Employee 

    public string EmName { get; set; } 
    public string EmNo { get; set; } 
    public int EmAge { get; set; } 
 
    public Windows.UI.Xaml.Media.Imaging.BitmapImage Photo { get; set; } 

    public class Employee
    {
        public string EmName { get; set; }
        public string EmNo { get; set; }
        public int EmAge { get; set; }

        public Windows.UI.Xaml.Media.Imaging.BitmapImage Photo { get; set; }
    }
接着弄好XAML。

[html]
<ListBox x:Name="listEmp" SelectionMode="Single"> 
    <ListBox.ItemTemplate> 
        <DataTemplate> 
            <Grid> 
                <Grid.ColumnDefinitions> 
                    <ColumnDefinition Width="Auto"/> 
                    <ColumnDefinition/> 
                </Grid.ColumnDefinitions> 
                <Grid Margin="10" Grid.Column="1"> 
                    <Grid.RowDefinitions> 
                        <RowDefinition Height="Auto"/> 
                        <RowDefinition Height="Auto"/> 
                        <RowDefinition Height="Auto"/> 
                    </Grid.RowDefinitions> 
                    <Grid.ColumnDefinitions> 
                        <ColumnDefinition Width="auto"/> 
                        <ColumnDefinition/> 
                    </Grid.ColumnDefinitions> 
                    <TextBlock Grid.Row="0" Grid.ColumnSpan="2" FontWeight="Bold" FontSize="24" Margin="3,2,3,2" Text="{Binding EmName}"/> 
                    <TextBlock Text="工号:" Grid.Row="1" Grid.Column="0"/> 
                    <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding EmNo}"/> 
                    <TextBlock Grid.Row="2" Grid.Column="0" Text="年龄:"/> 
                    <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding EmAge}"/> 
                </Grid> 
                <Image Grid.Column="0" Margin="4" Source="{Binding Photo}" Stretch="Uniform"/> 
            </Grid> 
        </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

        <ListBox x:Name="listEmp&quo

补充:web前端 , HTML 5 ,
更多windows8疑问解答:
玩转win 8 解开隐藏小工具的神秘面纱玩转win 8 解开隐藏小工具的神秘面纱(2)
Windows 8平板电脑难成主流的10大缘由Windows 8平板电脑难成主流的10大缘由(2)
手工打造Windows 8的开始菜单的技巧手工打造Windows 8的开始菜单的技巧(2)
那些你不熟悉的系统进程管理
Windows 8不能使用建行网银盾的完美解决方案Windows 8不能使用建行网银盾的完美解决方案(2)
Windows快捷键大全 把Windows 8玩弄于鼓掌之间Windows快捷键大全 把Windows 8玩弄于鼓掌之间(2)
Win8系统疑难解答与使用技巧分享Win8系统疑难解答与使用技巧分享(2)
Win8消费者预览版中的IE10浏览器功能详解Win8消费者预览版中的IE10浏览器功能详解(2)
玩转win8系统中的108个运行命令玩转win8系统中的108个运行命令(2)玩转win8系统中的108个运行命令(3)玩转win8系统中的108个运行命令(4)玩转win8系统中的108个运行命令(5)玩转win8系统中的108个运行命令(6)
windows8技巧大扫盲 50个使用小技巧集锦windows8技巧大扫盲 50个使用小技巧集锦(2)windows8技巧大扫盲 50个使用小技巧集锦(3)windows8技巧大扫盲 50个使用小技巧集锦(4)
Windows 8系统15个使用技巧汇总
6分钟给你与开机一样快速的系统重置
分享:Win8预览版安装系统,驱动系统,使用技巧分享:Win8预览版安装系统,驱动系统,使用技巧(2)
Windows用户对于Windows 8的众多功能期待Windows用户对于Windows 8的众多功能期待(2)
将WIN8装入U盘和移动硬盘教程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,