我想我有一个非常简单的目标,但似乎无法实现。
我想要实现的只是拥有一个带有标题的 ItemsControl(因为我不想要列表的选择功能)。最好是静态标题。
目前我正在为标题使用一个网格,然后将该网格复制到 ItemsControl 的 ItemTemplate (DataTemple) 中,然后将它们一个放在另一个网格中。它有点工作,但它并不总是很好地排列等等。
然后我发现了 HeaderedItemsControl,我认为这是一个绝妙的主意,但无法让它发挥作用,它根本不显示标题。我尝试了以下方法;
- 只需在 Xaml 的“标题”中输入文本
- 在 ItemsControl.Header 标记内放置一个带有 TextBlocks 的网格和静态文本
- 将网格放置在 HeaderTemplate (Datatemplate) 中并将其绑定到一个简单的对象
在将其移动到生产应用程序之前,我在一个小项目中的 Blend 中完成了这一切,我只是使用我创建的一个简单的示例数据源。
我可能在这里完全错过了这条船,但我们将不胜感激。
我目前的代码如下,首先是我的 HeaderedItemsControl
<HeaderedItemsControl Header="HeaderedItemsControl"
ItemsSource="{Binding Collection, Mode=Default}"
ItemTemplate="{DynamicResource ItemsControlDataTemplate}"
HeaderTemplate="{DynamicResource ItemsControlHeaderDataTemplate}"/>
然后我有一个按预期工作的 ItemTemple
<DataTemplate x:Key="ItemsControlDataTemplate">
<Grid d:DesignWidth="268">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.754*"/>
<ColumnDefinition Width="0.246*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Property1, Mode=Default}" TextWrapping="Wrap" d:LayoutOverrides="Height" HorizontalAlignment="Stretch" Margin="0" />
<TextBlock Text="{Binding Property2, Mode=Default}" TextWrapping="Wrap" d:LayoutOverrides="Height" Grid.Column="1" HorizontalAlignment="Left" Margin="0" />
</Grid>
</DataTemplate>
然后是公然反对其职业道德的标题,我已经尝试使用绑定和 TextBlock.Text 属性中的纯文本
<DataTemplate x:Key="ItemsControlHeaderDataTemplate">
<Grid d:DesignWidth="268">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.754*"/>
<ColumnDefinition Width="0.246*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Header.Header1, Mode=Default, Source={StaticResource SampleDataSource6}}" TextWrapping="Wrap" HorizontalAlignment="Stretch" Margin="0"/>
<TextBlock Text="{Binding Header.Header2, Mode=Default, Source={StaticResource SampleDataSource6}}" TextWrapping="Wrap" d:LayoutOverrides="Height" Grid.Column="1" HorizontalAlignment="Left" Margin="0"/>
</Grid>
</DataTemplate>