私はかなり単純な目標を持っていると思いますが、それに到達することはできません。
私が達成したいのは、ヘッダー付きの 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>