Secondwindow中的ObservableCollection

时间:2013-09-20 15:54:49

标签: c# wpf listview

我有两个Windows。 在Windows 1中,我准备了一个ObservableCollection。 在Windows 2中,我想将其绑定到列表视图。

它们都在同一名称空间中。

public partial class Window1 : Window
{
   public ObservableCollection<KeyListItem> keys;

   public Window1 {
     this.keys = new ObservableCollection<KeyListItem>();

... some code i create the items (key) ...
keys.Add(key);
   }

private void OpenDialogAndShowList() {
//this i start from a button

var sKeys = new Window2();
sKeys.lvSelectKey.ItemsSource = keys;
}
}

在Window2中,XAML看起来像这样:

<Grid>
        <ListView Name="lvSelectKey" ItemsSource="{Binding keys}" HorizontalAlignment="Left" Height="211" Margin="10,10,0,0" VerticalAlignment="Top" Width="564">
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="140" Header="Id" DisplayMemberBinding="{Binding Path=Id}" />
                    <GridViewColumn Width="140" Header="Name" DisplayMemberBinding="{Binding Path=Name}" />
                    <GridViewColumn Width="140" Header="Algorithm" DisplayMemberBinding="{Binding Path=Algorithm}" />
                    <GridViewColumn Width="140" Header="Bits" DisplayMemberBinding="{Binding Path=Bits}" />
                </GridView>
            </ListView.View>
        </ListView>


    </Grid>

问题是:

我在listview中看到一些空行。 当我添加三个项目时,我会看到三行......依此类推。

但我没有看到任何内容。

当我调试它时,我看到OC不是空的。

有人看到我的失败? :)

2 个答案:

答案 0 :(得分:1)

您应按如下方式调整课程:

public class KeyListItem
{ 
  public int Id { get; set; }
  public string Name { get; set; }
  public string Algorithm { get; set; }
  public int Bits { get; set; }
}

这是使用属性而不是简单字段:绑定引擎仅适用于属性。

答案 1 :(得分:0)

我明白了,谢谢马里奥。 我忘记了得到;集;

public class KeyListItem
{
    public int Id { get; set;}
    public string Name { get; set; }
    public string Algorithm { get; set; }
    public int Bits { get; set; }
}