0

私はこれを試しました:

<DataTemplate x:Key="RowItemTemplate">
    <ItemsControl ItemTemplate="{StaticResource ResourceKey=BorderItemTemplate}" ItemsSource="ContentPresenter.Content">
    </ItemsControl>
</DataTemplate>

スタックオーバーフローが発生します。ItemsControl の ItemsSource を ContentPresenter のコンテンツに設定するにはどうすればよいですか?

編集:

ItemsSource="ContentPresenter.Content"just に変更しましたItemsSource="{Binding}"が、まだスタック オーバーフローが発生しています。メインの ItemsControl の ItemsSource は次のように設定されnew List<List<string>> { new List<string> { "1", "2", "3", "4" }, new List<string> { "1", "2", "3" }, new List<string> { "1", "2" }, new List<string> { "1" } }; ています。これが私のコードのより大きな部分です。

<UserControl.Resources>
    <DataTemplate x:Key="BorderItemTemplate">
        <Border RenderTransformOrigin="0.5,0.5">
            <Border.RenderTransform>
                <RotateTransform Angle="-135"/>
            </Border.RenderTransform>
            <ContentPresenter/>
        </Border>
    </DataTemplate>
    <DataTemplate x:Key="RowItemTemplate">
        <ItemsControl ItemTemplate="{StaticResource ResourceKey=BorderItemTemplate}" ItemsSource="{Binding}">
        </ItemsControl>
    </DataTemplate>
</UserControl.Resources>
<ItemsControl Name="comparisonGrid" ItemTemplate="{StaticResource ResourceKey=RowItemTemplate}">
</ItemsControl>
4

1 に答える 1

1

プロパティを現在テンプレート化しているデータに設定しようとしているだけの場合はItemsSource、次を使用できます。

<DataTemplate x:Key="RowItemTemplate">
    <ItemsControl ItemsSource="{Binding}">
    </ItemsControl>
</DataTemplate>

this.DataContextバインディングは「の値」として解釈されDataContext、 内でテンプレート化している値に常に設定されますDataTemplate

編集

OP の完全なコードを見ると、問題はContentPresenter内でを使用することにあると思いますBorderItemTemplate。バインドされている番号を表示することが目的であると仮定すると、次のように置き換える必要があります。

<DataTemplate x:Key="BorderItemTemplate">
    <Border RenderTransformOrigin="0.5,0.5">
        <Border.RenderTransform>
            <RotateTransform Angle="-135"/>
        </Border.RenderTransform>
        <TextBlock Text="{Binding}" />
    </Border>
</DataTemplate>
于 2011-10-10T19:30:23.363 に答える