WPF Listbox生成方式介紹
作者:佚名
WPF Listbox控件的使用在我們實際的開發(fā)程序中是一個非常重要的操作。對于初學(xué)者來說,我們需要牢固的掌握這些基礎(chǔ)知識。
在WPF中,有很多常用的控件可以幫助我們在實際編程中輕松的完成各種圖形界面的相關(guān)需求。在這些控件中,有一個叫做WPF Listbox的控件,里面的Item是通過數(shù)據(jù)模板生成的。#t#
WPF Listbox代碼示例如下所示:
- < Border Margin="15"
BorderBrush="Aqua" BorderThickness="2"
Padding="8" CornerRadius="5"> - < StackPanel>
- < ListBox Name="myListBox"
ItemTemplate="{StaticResource
myDataTemplate}" - IsSynchronizedWithCurrentItem="True">
- < ListBox.ItemsSource>
- < Binding Source="{StaticResource
InventoryData}" XPath="Books/Book"/> - < /ListBox.ItemsSource>
- < /ListBox>
- < Button Margin="10"
- Click="DataTemplateFindElement">
Get text of textBlock in DataTemplate
< /Button> - < /StackPanel>
- < /Border>Listbox使用的數(shù)據(jù)模板如下:
< DataTemplate x:Key="myDataTemplate"> - < TextBlock Name="textBlock"
FontSize="14"> - < TextBlock.Text>
- < Binding XPath="Title"/>
- < /TextBlock.Text>
- < /TextBlock>
- < /DataTemplate>
使用下面的WPF Listbox代碼就可以獲取數(shù)據(jù)模板里面TextBlock中的內(nèi)容了。
- ListBoxItem myListBoxItem =
(ListBoxItem)(myListBox.Item
ContainerGenerator.Container
FromItem(myListBox.Items.CurrentItem));- ContentPresenter myContent
Presenter = FindVisualChild
< ContentPresenter>(myListBoxItem);- DataTemplate myDataTemplate
= myContentPresenter.ContentTemplate;- TextBlock myTextBlock =
(TextBlock)myDataTemplate.
FindName("textBlock", myContent
Presenter);- MessageBox.Show("The text of
the named TextBlock in the
DataTemplate of the selected
list item: " + myTextBlock.
Text);
上面代碼調(diào)用的函數(shù)如下:
- private childItem FindVisualChild< childItem>
(DependencyObject obj) where childItem
: DependencyObject- {
- for (int i = 0; i < VisualTreeHelper.
GetChildrenCount(obj); i++)- {
- DependencyObject child = VisualTree
Helper.GetChild(obj, i);- if (child != null && child is childItem)
- return (childItem)child;
- else
- {
- childItem childOfChild = FindVisualChild
< childItem>(child);- if (childOfChild != null)
- return childOfChild;
- }
- }
- return null;
- }
以上就是我們?yōu)榇蠹医榻B的WPF Listbox相關(guān)概念。
責任編輯:曹凱
來源:
博客園