WPF Listbox生成方式介绍

开发 开发工具
WPF Listbox控件的使用在我们实际的开发程序中是一个非常重要的操作。对于初学者来说,我们需要牢固的掌握这些基础知识。

WPF中,有很多常用的控件可以帮助我们在实际编程中轻松的完成各种图形界面的相关需求。在这些控件中,有一个叫做WPF Listbox的控件,里面的Item是通过数据模板生成的。#t#

WPF Listbox代码示例如下所示:

  1. < Border Margin="15" 
    BorderBrush="Aqua" BorderThickness="2" 
    Padding="8" CornerRadius="5"> 
  2. < StackPanel> 
  3. < ListBox Name="myListBox" 
    ItemTemplate="{StaticResource 
    myDataTemplate}"
     
  4. IsSynchronizedWithCurrentItem="True"> 
  5. < ListBox.ItemsSource> 
  6. < Binding Source="{StaticResource 
    InventoryData}"
     XPath="Books/Book"/> 
  7. < /ListBox.ItemsSource> 
  8. < /ListBox> 
  9. < Button Margin="10" 
  10. Click="DataTemplateFindElement">
    Get text of textBlock in DataTemplate
    < /Button> 
  11. < /StackPanel> 
  12. < /Border>Listbox使用的数据模板如下: 
    < DataTemplate x:Key="myDataTemplate"> 
  13. < TextBlock Name="textBlock" 
    FontSize="14"> 
  14. < TextBlock.Text> 
  15. < Binding XPath="Title"/> 
  16. < /TextBlock.Text> 
  17. < /TextBlock> 
  18. < /DataTemplate> 

使用下面的WPF Listbox代码就可以获取数据模板里面TextBlock中的内容了。

  1. ListBoxItem myListBoxItem = 
    (ListBoxItem)(myListBox.Item
    ContainerGenerator.Container
    FromItem(myListBox.Items.CurrentItem));  
  2. ContentPresenter myContent
    Presenter
     = FindVisualChild
    < ContentPresenter>(myListBoxItem);  
  3. DataTemplate myDataTemplate 
    myContentPresenter.ContentTemplate;   
  4. TextBlock myTextBlock = 
    (TextBlock)myDataTemplate.
    FindName("textBlock", myContent
    Presenter);  
  5. MessageBox.Show("The text of 
    the named TextBlock in the 
    DataTemplate of the selected 
    list item: " + myTextBlock.
    Text); 

上面代码调用的函数如下:

  1. private childItem FindVisualChild< childItem>
    (DependencyObject obj) where childItem 
    : DependencyObject  
  2. {  
  3. for (int i = 0; i <  VisualTreeHelper.
    GetChildrenCount
    (obj); i++)  
  4. {  
  5. DependencyObject child = VisualTree
    Helper
    .GetChild(obj, i);  
  6. if (child != null && child is childItem)  
  7. return (childItem)child;  
  8. else  
  9. {  
  10. childItem childOfChild = FindVisualChild
    < childItem>(child);  
  11. if (childOfChild != null)  
  12. return childOfChild;  
  13. }  
  14. }  
  15. return null;  

以上就是我们为大家介绍的WPF Listbox相关概念。

责任编辑:曹凯 来源: 博客园
相关推荐

2009-06-25 17:24:06

Hibernate主键

2009-12-28 13:23:19

WPF导出图片

2009-12-28 16:37:46

WPF异步模式

2009-06-16 11:13:38

Javadoc生成方法Javadoc

2017-07-04 16:18:15

分布式云应用导图

2009-12-29 09:32:27

WPF图片操作

2010-01-21 17:58:40

VB.NET List

2009-12-28 10:47:58

WPF绘图

2023-09-03 22:14:23

分布式ID

2009-12-29 13:29:28

WPF Depende

2009-12-25 10:05:06

WPF资源

2009-12-23 18:06:25

WPF模板

2009-12-24 14:18:57

WPF类型转换

2009-12-24 10:09:33

WPF事件注册

2009-12-25 11:04:51

WPF Border

2009-12-29 14:20:27

WPF路径

2009-12-28 13:57:39

WPF文字

2009-12-24 14:30:19

WPF MVVM

2009-12-28 13:18:17

WPF设备输入

2017-12-29 15:16:49

Parcel集成方式
点赞
收藏

51CTO技术栈公众号