WPF 的新手并具有选项卡,并且在每个选项卡中,内容都显示在弯曲的角落面板/窗口/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>
正如您在背景属性中看到的那样,我不想在内容中设置背景颜色,但不知道如何设置。我在这里使用它。
<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>