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.");
}