1

WPF で単純な 2 列のリストビューを作成しようとしていますが、レンガの壁にぶつかりました。

私はXamlを持っています:

<ListView x:Name="asas" Height="220" Margin="10,90,10,0" VerticalAlignment="Top" ItemsSource="{Binding Path=missionCollection}">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="140" Header="Name" DisplayMemberBinding="{Binding Path=name}"/>
            <GridViewColumn Width="140" Header="Folder" DisplayMemberBinding="{Binding Path=id}"/>
        </GridView>
    </ListView.View>
</ListView>

および C# コード:

public readonly ICollection<Mission> missionCollection = new ObservableCollection<Mission>();
foreach (var campaign in campaigns)
{
    if(campaign.id != "c1")
        continue;
    foreach(Mission mission in campaign.missionList)
        missionCollection.Add(mission);
}

この C# コードは同じウィンドウにあります。

私の問題は、バインディングに何かを追加すると、リストビューが更新されないように見えることです。

これに関する他の多くの質問を読みましたが、見つけた解決策はどれも役に立たないようです。

私はこのページをフォローしていました: http://www.switchonthecode.com/tutorials/wpf-tutorial-using-the-listview-part-1

4

1 に答える 1

0

私は答えを見つけました。

欲求不満から、リンク先のページが行ったことを正確に複製しようとしました。

追加する必要がありました

DataContext="{Binding RelativeSource={RelativeSource Self}}"

ウィンドウXaml要素へ

しかし、それだけでは十分ではありませんでした.MUSTからアクセスしようとするすべての要素にDisplayMemberBindingは、{ get; set; }(そのように空であっても)Missionクラスのすべてのプロパティに追加してから

private ObservableCollection<Mission> _missionCollection = new ObservableCollection<Mission>();
public ObservableCollection<Mission> MissionList
    {
        get { return _missionCollection; }
    }

ウィンドウコードに、すべてがスムーズに動作しています

于 2012-11-12T23:03:03.320 に答える