C# 如何在列表视图中添加行?

C# 如何在列表视图中添加行?,c#,wpf,xaml,listview,binding,C#,Wpf,Xaml,Listview,Binding,我好像没法让它工作。有人知道为什么吗 以下是标记: <ListView Width="210" Height="83" Margin="0 0 5 0" Name="FiltersListView"> <ListView.View> <GridView> <Grid

我好像没法让它工作。有人知道为什么吗

以下是标记:

<ListView Width="210" Height="83" Margin="0 0 5 0" Name="FiltersListView">
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn Header="Column" Width="Auto" DisplayMemberBinding="{Binding FilterColumn}"></GridViewColumn>
                                    <GridViewColumn Header="Rule" Width="Auto" DisplayMemberBinding="{Binding FilterRule}"></GridViewColumn>
                                    <GridViewColumn Header="String" Width="Auto" DisplayMemberBinding="{Binding FilterString}"></GridViewColumn>
                                </GridView>
                            </ListView.View>
                        </ListView>

这是因为
List
没有实现
INotifyCollectionChanged
,因此控件不知道列表实际上已经更新

尝试将
设置为
可观察选项



编辑:正如OP所提到的,另一个问题(空行)是由于在
行上使用了字段而不是属性,它现在部分工作。我看到行被添加,但行似乎都是空的。知道为什么吗?还有什么方法可以在ASMX中设置所有这些吗?@Alexandru:不确定
Width=“Auto”
是否正确--请尝试使用恒定宽度?@Alexandru:我没有ASP的经验,所以很抱歉,对ASMX没有任何线索。看起来技巧是在行的属性上添加getter和setter。现在我可以看到一排排了D公共类行{公共字符串筛选器列{get;set;}公共字符串筛选器规则{get;set;}公共字符串筛选器字符串{get;set;}
public SelectionWindow()
    {
        InitializeComponent();
        rows = new List<Row>();
        // Create a new binding object and set the binding of this list view to it.
        Binding myBinding = new Binding();
        myBinding.Source = rows;
        FiltersListView.SetBinding(ItemsControl.ItemsSourceProperty, myBinding);
    }
List<Row> rows;
public class Row
    {
        public string FilterColumn;
        public string FilterRule;
        public string FilterString;
    }
private void AddButtonClick(object sender, RoutedEventArgs e)
        {
            Console.WriteLine("Adding row.");
            rows.Add(new Row { FilterColumn = "1", FilterRule = "2", FilterString = "3" });
            Console.WriteLine("Row added.");
        }