我尝试将样式应用于HeaderedItemsControl
的{{1}}中的所有文本框。它在控件的标题内完美无瑕,但不知何故没有内容。
以下是TextBlock
样式:
<Style TargetType="TextBlock" x:Key="StructuredViewText">
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="Padding" Value="2.5,5,10,2.5"/>
</Style>
以下是HeaderedItemsControl
:
<Style TargetType="HeaderedItemsControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type HeaderedItemsControl}">
<StackPanel>
<Grid>
<Rectangle Fill="{TemplateBinding Background}"/>
<ContentPresenter ContentSource="Header">
<ContentPresenter.Resources>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource StructuredViewText}"/>
</ContentPresenter.Resources>
</ContentPresenter>
</Grid>
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource StructuredViewText}"/>
</Grid.Resources>
<Rectangle Stroke="{TemplateBinding BorderBrush}"/>
<ItemsPresenter Margin="2,0,0,0">
<ItemsPresenter.Resources>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource StructuredViewText}"/>
</ItemsPresenter.Resources>
</ItemsPresenter>
</Grid>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel MaxWidth="300"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
以下是HeaderedItemsControl
的使用方式:
<HierarchicalDataTemplate DataType="{x:Type this:StructuredViewNode}" ItemsSource="{Binding Children}">
<Grid>
<Grid.Resources>
<Style TargetType="Border" >
<Setter Property="Padding" Value="50" />
</Style>
</Grid.Resources>
<!-- Beschreibung -->
<HeaderedItemsControl Header="Beschreibung">
<TextBlock Text="{Binding Description}"/>
</HeaderedItemsControl>
</Grid>
</HierarchicalDataTemplate>
提前致谢!
答案 0 :(得分:1)
您的模板在当前解决方案中不起作用的原因是因为它在编译时不是Visual Tree的一部分。因此,不会应用Style。这仅在您在模板中明确指定样式时才有效:
<HierarchicalDataTemplate DataType="{x:Type this:StructuredViewNode}" ItemsSource="{Binding Children}">
<Grid>
<Grid.Resources>
<Style TargetType="Border" >
<Setter Property="Padding" Value="50" />
</Style>
</Grid.Resources>
<!-- Beschreibung -->
<HeaderedItemsControl Header="Beschreibung">
<HeaderedItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}" Style="{StaticResource StructuredViewText}"/>
</DataTemplate>
</HeaderedItemsControl.ItemTemplate>
</HeaderedItemsControl>
</Grid>
</HierarchicalDataTemplate>
在此之后,运行应用程序时将评估样式 来自MSDN的更多信息。