0

我试过这个:

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

并导致堆栈溢出。如何将 ItemsControl 的 ItemsSource 设置为 ContentPresenter 的内容?

编辑:

改为ItemsSource="ContentPresenter.Content"只是,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 回答