【问题标题】:How do i update a specific column in a specific row in Listview (wpf) programmatically如何以编程方式更新 Listview (wpf) 中特定行中的特定列
【发布时间】:2017-03-25 12:14:14
【问题描述】:

我有一个列表视图表see the picture in the link

我想要做的是以编程方式更改行 y 中的列 x。 我正在使用 wpf 和带有以下 xaml 代码的列表视图。

`<ListView x:Name="listView1" Height="153" Width="444">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header ="Code" Width="148"></GridViewColumn>
                        <GridViewColumn Header ="Name" Width="148"></GridViewColumn>
                        <GridViewColumn Header ="Country" Width="148"></GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>

` 我想要做的是以编程方式更改行 y 中的列 x。 像这样的东西 listview.Items[x].ColumnIndex[y] = "我的价值"; 我需要传递一个字符串值,我没有在那里使用数据绑定。

【问题讨论】:

标签: c# wpf listview


【解决方案1】:

图片和您的 XAML 标记不太匹配。我强烈建议在这里阅读有关 ListViews 工作原理的说明:http://www.wpf-tutorial.com/listview-control/simple-listview/

当更改 ListView 中显示的内容时,需要修改 ItemsSource 及其内容,而不是视觉“单元格”。这最好通过数据绑定来完成。

假设您的 ListView 设置如下:

XAML:

<ListView x:Name="myListView">
    <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding="{Binding Code}" Header="Code"/>
            <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name"/>
            <GridViewColumn DisplayMemberBinding="{Binding Country}" Header="Country"/>
        </GridView>
    </ListView.View>
</ListView>

C#:

public class MyInfo
{
    public string Code { get; set; }
    public string Name { get; set; }
    public string Country { get; set; }
}
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        ...

        ObservableCollection<MyInfo> items = new ObservableCollection<MyInfo>();
        items.Add(new MyInfo() { Code = "mycode1", Name = "myname1", Country = "mycountry1" });
        items.Add(new MyInfo() { Code = "mycode2", Name = "myname2", Country = "mycountry2" });
        items.Add(new MyInfo() { Code = "mycode3", Name = "myname3", Country = "mycountry3" });

        myListView.ItemsSource = items;
    }
}


要更改第二列中的 Name 值,您可以使用:

items[1].Name = "mynewname2";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2013-04-12
    相关资源
    最近更新 更多