いくつかのGridViewColumnsを含むWPFウィンドウにListViewがあります。最初の列はチェックボックスに使用されます。残りの列は非常によく似ており、テキストブロック付きのデータテンプレートが含まれています。これらのそれぞれに単一のデータテンプレートを再利用できるようにしたいのですが、バインディングが列ごとに異なるため、これをどのように実行するかがわかりません。
以下はXAMLの例です。最初のGridViewColumnはチェックボックスです。他の2つには、DataTemplateの例が含まれています。バインディングが異なる複数の列でこのDataTemplateを再利用するにはどうすればよいですか?
<ListView
AlternationCount="2"
DataContext="{StaticResource TaskGroups}"
ItemContainerStyle="{StaticResource TaskItemStyle}"
ItemsSource="{Binding}"
SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn
Header="Completed"
CellTemplate="{StaticResource CompletedCellTemplate}"
/>
<GridViewColumn Header="Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid>
<Rectangle Name="StrikeThrough" HorizontalAlignment="Stretch" VerticalAlignment="Center"
Height="1" StrokeThickness="1" Stroke="Transparent"/>
<TextBlock Text="{Binding Path=Name}"/>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsCompleted}" Value="True">
<Setter TargetName="StrikeThrough" Property="Stroke" Value="Black"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Status">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid>
<Rectangle Name="StrikeThrough" HorizontalAlignment="Stretch" VerticalAlignment="Center"
Height="1" StrokeThickness="1" Stroke="Transparent"/>
<TextBlock Text="{Binding Path=StatusDescription}"/>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsCompleted}" Value="True">
<Setter TargetName="StrikeThrough" Property="Stroke" Value="Black"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>