网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

详解WPF如何邦定ListBox数据的示例

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

WPF主要做UI,所以数据邦定当然少不了。本节以ListBox为例,介绍数据邦定.
先建立一个WPFApplication Project. 在Window xaml里添加一个ListBox控件。

  1. <Window x:Class="WpfProject.Test" 
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4.     Title="Test" Height="300" Width="300" Loaded="Window_Loaded"> 
  5.     <Grid> 
  6.         <ListBox Name="lbxPersons"></ListBox> 
  7.     </Grid> 
  8. </Window> 

引用一个Loaded事件来完成我们的邦定。大家知道,ListBox是一个ItemControl,所以我们通过设置ItemSource来邦定数据。

  1. public partial class Test : Window 
  2.     { 
  3.         public Test() 
  4.         { 
  5.             InitializeComponent(); 
  6.         } 
  7.  
  8.         private void Window_Loaded(object sender, RoutedEventArgs e) 
  9.         { 
  10.             List<Person> persons = new List<Person>{ 
  11.                 new Person{FirstName="jimson",LastName="Ma"}, 
  12.                 new Person{FirstName="Lingxia",LastName="Wang"
  13.             }; 
  14.  
  15.             this.lbxPersons.ItemsSource = persons; 
  16.         } 
  17.     } 
  18.  
  19.     public class Person{ 
  20.         public string LastName { setget; } 
  21.         public string FirstName { setget; } 
  22.     } 

运行F5,结果:

显然这样是不成的。改进xaml:

  1. <Window x:Class="WpfProject.Test" 
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4.     Title="Test" Height="300" Width="300" Loaded="Window_Loaded"> 
  5.     <Grid> 
  6.         <ListBox Name="lbxPersons"> 
  7.             <ListBox.ItemTemplate> 
  8.                 <DataTemplate> 
  9.                     <StackPanel Orientation="Horizontal"> 
  10.                         <TextBlock Text="{Binding FirstName}" Width="50" /> 
  11.                         <TextBlock Text="{Binding LastName}" Width="50" /> 
  12.                     </StackPanel> 
  13.                 </DataTemplate> 
  14.             </ListBox.ItemTemplate> 
  15.         </ListBox> 
  16.     </Grid> 
  17. </Window> 

运行F5,结果:

这下正确了。但是有个问题,空值怎么办?看看这个:

  1. <Window x:Class="WpfProject.Test" 
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4.     Title="Test" Height="300" Width="300" Loaded="Window_Loaded"> 
  5.     <Grid> 
  6.         <ListBox Name="lbxPersons"> 
  7.             <ListBox.ItemTemplate> 
  8.                 <DataTemplate> 
  9.                     <StackPanel Orientation="Horizontal"> 
  10.                         <TextBlock Text="{Binding FirstName}" Width="50" /> 
  11.                         <TextBlock Text="{Binding LastName}" Width="50" /> 
  12.                         <TextBlock Text="{Binding Age, TargetNullValue='Age Unknown'}"  /> 
  13.                     </StackPanel> 
  14.                 </DataTemplate> 
  15.             </ListBox.ItemTemplate> 
  16.         </ListBox> 
  17.     </Grid> 
  18. </Window> 

代码:

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using System.Windows; 
  6. using System.Windows.Controls; 
  7. using System.Windows.Data; 
  8. using System.Windows.Documents; 
  9. using System.Windows.Input; 
  10. using System.Windows.Media; 
  11. using System.Windows.Media.Imaging; 
  12. using System.Windows.Shapes; 
  13.  
  14. namespace WpfProject 
  15.     /// <summary> 
  16.     /// Interaction logic for Test.xaml 
  17.     /// </summary> 
  18.     public partial class Test : Window 
  19.     { 
  20.         public Test() 
  21.         { 
  22.             InitializeComponent(); 
  23.         } 
  24.  
  25.         private void Window_Loaded(object sender, RoutedEventArgs e) 
  26.         { 
  27.             List<Person> persons = new List<Person>{ 
  28.                 new Person{FirstName="jimson",LastName="Ma", Age=23}, 
  29.                 new Person{FirstName="Lingxia",LastName="Wang"
  30.             }; 
  31.  
  32.             this.lbxPersons.ItemsSource = persons; 
  33.         } 
  34.     } 
  35.  
  36.     public class Person{ 
  37.         public string LastName { setget; } 
  38.         public string FirstName { setget; } 
  39.         public int? Age { setget; } 
  40.     } 
  41.  

运行结果:

应用TargetNullValue,很好的处理了控制信息。

  • 上一篇资讯: WCF与Asp.netWebservice比较
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师