編集
問題は、デバッガーによって検出されていない Enclosure に MtObject をキャストするエラーをスローしていたエンクロージャーの取得にあったことが判明しました。
アンディの解決策をそのまま正しいとマークし、問題が ListView コードにないことを確認するのに役立ちました。アンディに感謝します
だから私は周りを探していて、正しい答えを見つけることができないようです.
基本的に、動物の配列にバインドしたListViewがあり、1つの動物には別のオブジェクトのエンクロージャのプロパティがあり、このようにエンクロージャ名をバインドしようとしています
<GridViewColumn Header="Enclosure" DisplayMemberBinding="{Binding Enclosure.Name}" />
これは明らかに間違っていますが、私が達成しようとしていることを示していると思います
。基本的なレイアウトは object.object です。
以下の完全な ListView
<ListView Margin="20,0,20,0" Grid.Row="1" ItemsSource="{Binding}" x:Name="displayResults" SelectionChanged="displayResults_SelectionChanged_1">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Height" Value="45" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView x:Name="gridView">
<GridViewColumn Header="Photo" CellTemplate="{StaticResource PhotoTemplate}"/>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding GivenName}" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Enclosure.Id}" Header="Enclosure"/>
<GridViewColumn Header="Species" DisplayMemberBinding="{Binding SpeciesName}" />
<GridViewColumn Header="DOB" DisplayMemberBinding="{Binding Dob}" />
<GridViewColumn Header="Average Life Span" DisplayMemberBinding="{Binding AverageLifeSpan}" />
<GridViewColumn Header="Natural Habitat" DisplayMemberBinding="{Binding NaturalHabitat}" />
</GridView>
</ListView.View>
</ListView>
エンクロージャーの取得/設定方法
public Enclosure Enclosure {
get {
return ((Enclosure)(GetSuccessor(GetEnclosureRelationship(Database))));
}
set {
SetSuccessor(GetEnclosureRelationship(Database), value);
}
}