将ItemsSource设置为ContentPresenter.Content

时间:2011-10-10 19:17:37

标签: xaml c#-4.0 itemssource contentpresenter

我试过这个:

<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>

1 个答案:

答案 0 :(得分:1)

如果您只是想将ItemsSource属性设置为您当前正在模板化的数据,则可以使用以下内容:

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

绑定被解释为&#34; this.DataContext&#34;和DataContext的值始终设置为您在DataTemplate内模板化的值。< / p>

修改

查看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>