首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Textbox样式不应用于ItemsPresenter文本框

Textbox样式不应用于ItemsPresenter文本框
EN

Stack Overflow用户
提问于 2018-04-09 08:41:20
回答 1查看 143关注 0票数 0

我试图将样式应用于HeaderedItemsControlHeaderedItemsControl中的所有文本框。它在控件的标题中运行得完美无缺,但不知何故,它的内容却不完美。

下面是TextBlock风格:

代码语言:javascript
复制
<Style TargetType="TextBlock" x:Key="StructuredViewText">
     <Setter Property="TextWrapping" Value="Wrap"/>
     <Setter Property="Padding" Value="2.5,5,10,2.5"/>
</Style>

下面是HeaderedItemsControl的样式

代码语言:javascript
复制
<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

代码语言:javascript
复制
<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>

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-09 09:52:34

模板在当前解决方案中无法工作的原因是,在编译时它不是Visual的一部分。正因为如此,样式才不会被应用。只有在您显式地分配模板中的样式时才能这样做:

代码语言:javascript
复制
<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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49728804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档