0

私は2つの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>

問題は:

リストビューに空の行が表示されます。3 つの項目を追加すると、3 つの行が表示されます ..... など。

しかし、私はコンテンツを表示しません。

デバッグすると、OC が空ではないことがわかります。

誰かが私の失敗を見ますか?:)

4

2 に答える 2

1

次のようにクラスを調整する必要があります。

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

つまり、単純なフィールドの代わりにプロパティを使用します。バインディング エンジンはプロパティでのみ機能します。

于 2013-09-20T16:05:04.107 に答える
0

わかった、ありがとうマリオ。取得を忘れました。設定;

public class KeyListItem
{
    public int Id { get; set;}
    public string Name { get; set; }
    public string Algorithm { get; set; }
    public int Bits { get; set; }
}
于 2013-09-20T16:04:57.903 に答える