为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 WPF 中将项目绑定到 Listview

如何在 WPF 中将项目绑定到 Listview

C#
弑天下 2021-11-07 19:44:59
对不起,我的英语不好。这是我的问题:我的 Listview,我想你看到了我的问题:这是我的代码:<ListView ItemsSource="{Binding Name}" SelectionChanged="lvUsers_SelectionChanged" Margin="10" Name="lvUsers">        <ListView.View>            <GridView>                <GridViewColumn Header="Name" Width="120"/>                <GridViewColumn Header="Age" Width="50"/>                <GridViewColumn Header="Mail" Width="150"/>            </GridView>        </ListView.View>    </ListView>这是c#代码:public partial class MainWindow : Window{    List<User> items = new List<User>();    public MainWindow()    {        InitializeComponent();        items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });        items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });        items.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" });        DataContext = items;    }}public class User{    public string Name { get; set; }    public int Age { get; set; }    public string Mail { get; set; }}我想将列表项绑定到我的列表视图。谢谢您的帮助!
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

只需使用下面的行

<ListView ItemsSource="{Binding items}" SelectionChanged="lvUsers_SelectionChanged" Margin="10" Name="lvUsers">


查看完整回答
反对 回复 2021-11-07
?
GCT1015

TA贡献1827条经验 获得超4个赞

我自己并没有经常使用 WPF,但是对可以解决您的问题的方法进行了疯狂的猜测:

替换这一行:

DataContext = items;

用这一行:

DataContext = this;

您想将 DataContext 绑定到一个类,而不是一个特定的集合(我可能会创建一个单独的类,称为沿着 MainWindowViewModel 的一些东西,但一次只做一件事)。

然后在 ListView 的第一个标签中:

<ListView ItemsSource="{Binding Name}" SelectionChanged="lvUsers_SelectionChanged" Margin="10" Name="lvUsers">

用这一行替换它:

<ListView ItemsSource="{Binding items}" SelectionChanged="lvUsers_SelectionChanged" Margin="10" Name="lvUsers">

您希望 ItemsSource 是集合的名称,而不是您实际想要从该集合中使用的名称。

这意味着您可以稍后在 ListView 中使用 set 绑定来访问集合属性:

{Binding Name} , {Binding Age} , {Binding Mail}


查看完整回答
反对 回复 2021-11-07
?
Qyouu

TA贡献1786条经验 获得超11个赞

因此,更改 xaml 代码以使您的代码正常工作:


<ListView ItemsSource="{Binding }" SelectionChanged="lvUsers_SelectionChanged" Margin="10" Name="lvUsers">

    <ListView.View>

        <GridView>

            <GridViewColumn Header="Name" 

                            DisplayMemberBinding="{Binding Name}" Width="120"/>

            <GridViewColumn Header="Age"

                            DisplayMemberBinding="{Binding Age}" Width="50"/>

            <GridViewColumn Header="Mail"

                            DisplayMemberBinding="{Binding Mail}" Width="150"/>

        </GridView>

    </ListView.View>

</ListView>

这些都是需要的改变。您可以使用 MVVM 原则对代码进行改进,以分离您的代码、Notifiable 类,以便在您从集合中添加/删除元素时更新 UI。


查看完整回答
反对 回复 2021-11-07
  • 3 回答
  • 0 关注
  • 271 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信