WPF listview 控件使用
无法选中在listview控件中的其他控件,如textbox,通过文档大纲也不能选中,是只能通过xaml编辑还是什么其他原因?还有一个问题是为什么我在GridView属性...
无法选中在listview控件中的其他控件,如textbox,通过文档大纲也不能选中,是只能通过xaml编辑还是什么其他原因?
还有一个问题是为什么我在GridView属性里找不到GridViewColumn.CellTemplate DataTemplate这些属性??? 展开
还有一个问题是为什么我在GridView属性里找不到GridViewColumn.CellTemplate DataTemplate这些属性??? 展开
2个回答
展开全部
一、实现排序功能
需求是这样的:假如我们把学生的分数放入ListView,当我们单机ListView头部时候实现对按分数的排序,更改Xaml如下:
View Code
更改地方也不多,Student类添加Score属性,DataTemplate中增加Score的列模板,数据源添加一些默认的分数。
数据有了,下面就是排序功能了,首先写一个排序的函数:StuSort(string sortBy, ListSortDirection direction);排序功能的实现是通过CollectionViewSource类实现的,这个类我就不介绍了,可以对数据源进行排序分组什么的,详情参考MSDN 。代码如下:
private void StuSort(ListView lv, string sortBy, ListSortDirection direction)
{
ICollectionView dataView =CollectionViewSource.GetDefaultView(lv.ItemsSource);//获取数据源视图
dataView.SortDescriptions.Clear();//清空默认排序描述
SortDescription sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);//加入新的排序描述
dataView.Refresh();//刷新视图
}
函数写好了,介绍下此函数的三个参数,第一个毫无疑问是数据的承载着ListView了,第二个比较重要是要通过那个字段排序,本例子是通过Student的Score来排序,所以就是“Score”,第三个参数是排序方向,升序或者降序了。然后当我们点击ListView的Header的时候触发此函数。Xaml页面中的ListView中监控GridViewColumnHeaderClick的路由事件,
<ListView x:Name="ListViewStudent"
ItemsSource="{StaticResource stuList}"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler"
>
后台实现GridViewColumnHeaderClickedHandler事件,代码如下:
private void GridViewColumnHeaderClickedHandler(object sender, RoutedEventArgs e)
{
GridViewColumnHeader gch=e.OriginalSource as GridViewColumnHeader;
StuSort(this.ListViewStudent, "Score", ListSortDirection.Ascending);
}
运行,单机分数,实现排序功能。
需求是这样的:假如我们把学生的分数放入ListView,当我们单机ListView头部时候实现对按分数的排序,更改Xaml如下:
View Code
更改地方也不多,Student类添加Score属性,DataTemplate中增加Score的列模板,数据源添加一些默认的分数。
数据有了,下面就是排序功能了,首先写一个排序的函数:StuSort(string sortBy, ListSortDirection direction);排序功能的实现是通过CollectionViewSource类实现的,这个类我就不介绍了,可以对数据源进行排序分组什么的,详情参考MSDN 。代码如下:
private void StuSort(ListView lv, string sortBy, ListSortDirection direction)
{
ICollectionView dataView =CollectionViewSource.GetDefaultView(lv.ItemsSource);//获取数据源视图
dataView.SortDescriptions.Clear();//清空默认排序描述
SortDescription sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);//加入新的排序描述
dataView.Refresh();//刷新视图
}
函数写好了,介绍下此函数的三个参数,第一个毫无疑问是数据的承载着ListView了,第二个比较重要是要通过那个字段排序,本例子是通过Student的Score来排序,所以就是“Score”,第三个参数是排序方向,升序或者降序了。然后当我们点击ListView的Header的时候触发此函数。Xaml页面中的ListView中监控GridViewColumnHeaderClick的路由事件,
<ListView x:Name="ListViewStudent"
ItemsSource="{StaticResource stuList}"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler"
>
后台实现GridViewColumnHeaderClickedHandler事件,代码如下:
private void GridViewColumnHeaderClickedHandler(object sender, RoutedEventArgs e)
{
GridViewColumnHeader gch=e.OriginalSource as GridViewColumnHeader;
StuSort(this.ListViewStudent, "Score", ListSortDirection.Ascending);
}
运行,单机分数,实现排序功能。
展开全部
可以有这些属性啊。你是如下面这样使用的吗?
<GridViewColumn DisplayMemberBinding="{Binding StuName}" Header="Name" Width="120"/>
<GridViewColumn Header="Name2">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding StuName}" Width="120" TextAlignment="Center"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding StuName}" Header="Name" Width="120"/>
<GridViewColumn Header="Name2">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding StuName}" Width="120" TextAlignment="Center"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
追问
这个代码不是我写的,是研究别人的程序,就是在看这个UI的时候发现listview里面的控件选不中,也没在属性列表里看到这些子属性,像datatemplate,在xaml里面却有。你知道为什么吗?还有就是为什么一列有3个TextBlock,而xaml就只有一个
?
追答
不清楚= =不好意思帮不了你。我一般看别人代码只看算法逻辑。。。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询