Новичок в WPF и имеет вкладки, и на каждой вкладке содержимое представлено в изогнутой угловой панели / window / whateveryouwannacallit.Я не был уверен, как это сделать (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 для использования стиля вместо Template.
<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>