博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListView中使用DataTemplete
阅读量:5252 次
发布时间:2019-06-14

本文共 2211 字,大约阅读时间需要 7 分钟。

xaml:

<Window.Resources>

<c:ArrayList x:Key="stuList">
<local:Student Name="张三" Age="20" Skill="三年级" />
<local:Student Name="李四" Age="21" Skill="二年级" />
<local:Student Name="王五" Age="23" Skill="三年级" />
<local:Student Name="王二" Age="26" Skill="五年级" />
<local:Student Name="Tom" Age="15" Skill="一年级" />
</c:ArrayList>
<DataTemplate x:Key="NameDT">
<TextBox x:Name="tName" Text="{Binding Name}" GotFocus="tName_GotFocus"></TextBox>
</DataTemplate>
<DataTemplate x:Key="AgeDT">
<TextBlock x:Name="tAge" Text="{Binding Age}"></TextBlock>
</DataTemplate>
<DataTemplate x:Key="SkillDT">
<TextBlock x:Name="tSkill" Text="{Binding Skill}">
</TextBlock>
</DataTemplate>
</Window.Resources>
<Grid>
<ListView x:Name="listV" ItemsSource="{StaticResource stuList}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" CellTemplate="{StaticResource NameDT}" />
<GridViewColumn Header="Age" CellTemplate="{StaticResource AgeDT}" />
<GridViewColumn Header="Skill" CellTemplate="{StaticResource SkillDT}" />
</GridView>
</ListView.View>
</ListView>
</Grid>

 

C#: 代码

/// Window2.xaml 的交互逻辑

/// </summary>
public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();
}

private void tName_GotFocus(object sender, RoutedEventArgs e)

{
//访问业务逻辑数据
TextBox tb = e.OriginalSource as TextBox;//获取事件的发起源头
ContentPresenter cp = tb.TemplatedParent as ContentPresenter;//获取模板目标
Student stu = cp.Content as Student;//获取业务逻辑数据
this.listV.SelectedItem = stu;//设置选中项

//访问界面元素

ListViewItem lvl = listV.ItemContainerGenerator.ContainerFromItem(stu) as ListViewItem;
TextBox tbView = FindVisualChild<TextBox>(lvl);
MessageBox.Show(tbView.Text);
}
//寻找元素
public TextBox FindVisualChild<TextBox>(DependencyObject obj) where TextBox : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject dobj = VisualTreeHelper.GetChild(obj, i);//返回子元素
if (dobj != null && dobj is TextBox)
{
return dobj as TextBox;
}
else
{
TextBox t = FindVisualChild<TextBox>(dobj);
if (t != null)
{
return t;
}
}
}
return null;
}
}

public class Student

{
public string Name { get; set; }
public int Age { get; set; }
public string Skill { get; set; }
}

转载于:https://www.cnblogs.com/lixiang0829/p/3456303.html

你可能感兴趣的文章
thinkphp save()方法没有数据,保存失败解决办法
查看>>
★用辩证数学解答“缸中之脑”
查看>>
使用SSM架构的使用,打算使用json
查看>>
支付宝红包唤起 支付宝自动搜索
查看>>
花了一年时间开发出来的AutoCAD矢量字库编辑器
查看>>
win10的资源管理器,边框不见了
查看>>
cocos2dx加密解密资源
查看>>
近几天开发前端开发问题总结
查看>>
我的编码规范
查看>>
C#取得控制台应用程序的根目录方法
查看>>
Java成员变量与局部变量同名
查看>>
js判断输入是否为空,获得输入的类型
查看>>
选择排序
查看>>
一个长度为10的数组,将数组按照冒泡排序法,进行排序。
查看>>
HDU - 3949 线性基应用
查看>>
CodeChef - RIN 最小割应用 规划问题
查看>>
[saiku] 源码整合[maven整合]
查看>>
爬虫综合大作业
查看>>
PHP面试题目搜集
查看>>
Eclipse插件安装
查看>>