WPFの新機能であり、タブがあり、各タブのコンテンツは、湾曲したコーナーパネル/ウィンドウ/何でも表示されます。これを行う方法(Style、ControlTemplate)がわかりませんでしたが、DataTemplateを使用することにしました。
だから今私はこのDataTemplateを持っています:
<DataTemplate x:Key="TabContentPresenter" >
<Border Margin="10"
BorderBrush="{StaticResource DarkColorBrush}"
CornerRadius="8"
BorderThickness="2"
Grid.Row="0"
Padding="5"
Background="{TemplateBinding Background}">
<ContentPresenter Content="{Binding}" />
</Border>
</DataTemplate>
backgroundプロパティでわかるように、コンテンツに背景色を設定するつもりはありませんが、方法がわかりません。ここで使用します。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="120"/>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ContentControl ContentTemplate="{StaticResource TabContentPresenter}" Background="White">
<!-- Something Here -->
</ContentControl>
<ContentControl ContentTemplate="{StaticResource TabContentPresenter}" Grid.Row="1" Background="Blue">
<!-- Something Here -->
</ContentControl>
</Grid>
ここでDataTemplateを使用するのは間違っていますか、それとも他の方法がありますか?
おそらく、コンテンツの背景をまっすぐに設定し、テンプレートのパディングからコンテンツの余白に変更することもできますが、同様の状況では機能せず、一度だけ設定する方がよいでしょう。
編集:
アドバイスに従って、ControlTemplateに変更し、スタイル内に配置しました。これはバックグラウンドの問題を解決しますが、より大きな問題を作成します。これで、コンテンツは表示されなくなります。私はここのブログでtargetTypeを置くことでこれが解決することを読みましたが、それは私の問題を解決しませんでした。コードは現在このようになっており、テンプレートの代わりにスタイルを使用するようにContentControlも変更されています。
<Style x:Key="TabContentPresenter" TargetType="ContentControl" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Border Margin="10"
BorderBrush="{StaticResource DarkColorBrush}"
CornerRadius="8"
BorderThickness="2"
Grid.Row="0"
Background="{TemplateBinding Background}">
<ContentPresenter Content="{Binding}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>