在WPF列表视图显示行号 [英] Display row numbers in Wpf Listview

查看:108
本文介绍了在WPF列表视图显示行号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个正在从SQL Server数据库中,创建一个ListView你怎么包括行号?

 < ListView的X:名称=lstNameHEIGHT =400Canvas.Top =55WIDTH =450>
                < ListView.View>
                    <&GridView的GT;
                        < GridViewColumn标题=号码宽度=自动
                         DisplayMemberBinding ={绑定路径= ID}/>
                        < GridViewColumn标题=姓WIDTH =自动
                         DisplayMemberBinding ={绑定路径= FName参数}/>
                        < GridViewColumn标题=姓氏WIDTH =自动
                         DisplayMemberBinding ={绑定路径= LName的}/>
                        < GridViewColumn标题=的StreetAddressWIDTH =自动
                         DisplayMemberBinding ={绑定路径=街道}/>
                        < GridViewColumn标题=城WIDTH =自动
                         DisplayMemberBinding ={绑定路径=城市}/>
                        < GridViewColumn标题=国家WIDTH =自动
                         DisplayMemberBinding ={绑定路径=国家}/>
                    < / GridView的>
                < /ListView.View>
            < /&的ListView GT;


解决方案

我不明白一个简单的方法做,因为WPF的理念是绑定到数据,然后认为应该是独立的。

但我可以看到怎样的一个黑客得到它的工作。

您绑定(一次性)对您的视图模型一个计数属性,在获取此属性访问,你遍历加上计数来返回它。

这样的话,每个的ListView 项目将有一个适当的索引。

但要小心与解决方案,您将无法在那之后的索引追溯项目。如果您还需要做到这一点无论出于什么原因,你应该真正发挥 IdInTable 字段中的对象,并在您的视图模型正确填充它。

I have a listview that is being created from a sql server database, how do you include the row numbers?

            <ListView x:Name="lstName" Height="400" Canvas.Top="55" Width="450">
                <ListView.View>
                    <GridView>                     
                        <GridViewColumn Header="Number" Width="auto" 
                         DisplayMemberBinding="{Binding Path=Id}" />
                        <GridViewColumn Header="FirstName" Width="auto" 
                         DisplayMemberBinding="{Binding Path=FName}" />
                        <GridViewColumn Header="LastName" Width="auto" 
                         DisplayMemberBinding="{Binding Path=LName}" />
                        <GridViewColumn Header="StreetAddress" Width="auto" 
                         DisplayMemberBinding="{Binding Path=Street}" />
                        <GridViewColumn Header="City" Width="auto" 
                         DisplayMemberBinding="{Binding Path=City}" />
                        <GridViewColumn Header="State" Width="auto"
                         DisplayMemberBinding="{Binding Path=State}" />                       
                    </GridView>                        
                </ListView.View>
            </ListView>

解决方案

I don't see an easy way to do that as WPF philosophy is to bind to data, and then the view should be independent.

But I can see kind of a hack to get it to work.

You bind (OneTime) against a Counter property from your ViewModel, and in the get accessor of this property, you iterate the counter in addition to returning it.

That way, each ListView item will have a proper index.

But be careful with that solution, you won't be able to trace back an index to an item after that. If you need to also do that for whatever reason, you should actually make a IdInTable field in your object and populate it correctly in your ViewModel.

这篇关于在WPF列表视图显示行号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆