2

これに関する問題はおそらく明らかですが、私はそれを見るのに苦労しています。

次の XAML があります。

<ItemsControl x:Name="contentList">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="200" />
                    </Grid.ColumnDefinitions>
                    <TextBlock Text="{Binding Name}" TextWrapping="Wrap" />
                    <ItemsControl x:Name="imageContent" Grid.Column="1">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding ImageCollection.FullName}" TextWrapping="Wrap" />
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

contentList の itemsSource を次のように設定しました。

contentList.ItemsSource = myObservableCollection;

ただし、imageContent に対して同じことをしようとすると、IntelliSense 経由でアクセスできないようです。プロジェクトのクリーン/リビルドを試みましたが、違いはありません。

別の方法で imageContent にアクセスする必要がありますか?

myObservableCollection を contentList と imageContent の両方に使用したいのは、次の構造を持つためです。

  • 名前 (文字列)
  • ImageCollection (ObservableCollection)

次の UI を作成することを目的としています。

ここに画像の説明を入力

4

1 に答える 1

2

外部コレクションのリスト オブジェクト内に別の ObservableCollection を定義する必要があります。このようなもの:

ObservableCollection<MyObject> OuterList = new ObservableCollection<MyObject>();

//...


public class MyObject
{
    public ObservableCollection<FileInfo> ImageCollection {get; set;}
    public MyObject()
    {
        ImageCollection = new ObservableCollection<FileInfo>();
    }
}

次に、次のように xaml を更新します。

...
<ItemsControl x:Name="imageContent" ItemsSource="{Binding ImageCollection}">
...

したがって、これにより、外側のリストの各アイテムが、そのリストを保持する独自の監視可能なコレクションを保持するようになります。

また、この変更に伴い、テキスト ブロックのバインディングを必ず更新してください。各項目は FileInfo オブジェクトを表すため、次のように簡単に記述できます。

<DataTemplate>
    <TextBlock Text="{Binding FullName}" TextWrapping="Wrap" />
</DataTemplate>
于 2012-10-08T20:37:16.430 に答える