2013-05-28 22 views
0

我似乎无法得到这个工作。任何人有任何想法为什么?如何添加一行到我的列表视图?

下面是标记:

<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> 

这里是窗口初始化:

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

回答

1

这是因为List<int>没有实现INotifyCollectionChanged,因此控件不知道该列表实际上已被更新。

尝试使rowsObservableColelction<Row>


编辑:如所提到的OP,其他问题(空行)是由于使用字段,而不是性能,上。

+0

现在部分工作。我看到行被添加,但行似乎都是空白的。任何想法为什么? – Alexandru

+0

还有一种方法可以在ASMX中设置所有这些吗? – Alexandru

+0

@Alexandru:不知道是否“宽度=”自动“是真的 - 你可以请尝试一个恒定的宽度? – Vlad

相关问题