WPF ListBox控件学习

WPF 提供了有关动态数据绑定的很多有效方法。

其中有一种就是通过ObservableCollection<T>将数据绑定到控件上去,

当ObservableCollection<T>集合中发生任意变化时,控件上动态绑定的数据也会随之发生变化。

或者可以通过自定义类实现ObservableCollection<T>类,也可以实现上面的方法:

<pre name="code" class="csharp">// 通过ObservableCollection<T>类实现绑定控件和基础数据源保持一致
// 当添加、删除、修改、刷新集合中的数据时都会出发CollectionChanged事件
// 该方法相对于绑定ItemSource效率更高
public  class DisplayPerson: ObservableCollection<PersonInfo>
{
	public Display()
	{
                // 将PersonInfo对象添加到DisplayPerson集合的最后
		Add(new PersonInfo("FirstName","LastName"));
		Add(new PersonInfo("Wang","Wei"));
	}
}


/// 创建属性
// 包含firstname及lastName
public class PersonInfo
{
	private string firstName;
	private string lastName;
	
	// firstName
	public String FirstName
	{
		set{firstName=value;}
		get{return firstName;}
	}
	
	// lastName
	public String LastName
	{
		set{lastName=Value;}
		get{return lastName;}
	}
}


 

只需要将上面的DisplayPerson类名绑定到WPF控件上,例如ListBox:

这时就可以实现数据和控件关联起来。

下面是前台的xaml文件:

<Window x:Class="WpfObservableCollection.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="396.269" Width="735.448"
        Loaded="WindowLoaded">
    <Window.Resources >
<!--DisplayPerson 表示要绑定的数据源-->
        <DataTemplate x:Key="MyTemplate" DataType="xType DisplayPerson">    
            <Grid >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width=" Auto"/>
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>

                <TextBlock Text="{Binding Path=FirstName}" FontSize="18" Grid.Column="0"/>
                <TextBlock Text="{Binding Path=LastName}" FontSize="20"  Grid.Column="1"/>
                <Button Content="Click it" FontSize="20" Grid.Column=" 2" />
            </Grid>             
        </DataTemplate> 
        
    </Window.Resources>
    
    <Grid>


        <!--ItemsSource="{Binding Source={StaticResource NameListData}}"-->
            <!--这里我们将数据模板ItemTemplate定义在Window Resource资源文件中--->
        <ListBox x:Name="faxListBox" Margin="10,0,299,0"  ItemTemplate="{StaticResource MyTemplate}" /> 
        <Button x:Name="btnUserClick" Click="ButtonClick" Margin="469,10,119,311"/>
    </Grid>
</Window>


上面就是将数据和控件关联在一起了,非常方便。

如果自己实现的话,需要使用到观察者模式,需要花很多的代码来实现。

下次会讲到如何通过观察者方式来实现控件和数据的关联。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值