文本框样式未应用于 ItemsPresenter 文本框

鲁本·博内

我试图将样式应用到所有文本框在ItemsPresenterHeaderedItemsControl它在控件的标题中完美无缺,但不知何故与它的内容无关。

这是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>

提前致谢!

最大

您的模板在当前解决方案中不起作用的原因是它在编译时不是可视化树的一部分。因此,将不会应用样式。这仅在您像这样在模板中明确分配样式时才有效:

<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 的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章