我试过这个:
<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>
答案 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>