当前位置: 首页 > 知识库问答 >
问题:

ListView忽略项模板的部分样式

杜辰龙
2023-03-14

我使用常规StackPanel(在DataTemplate中)堆叠了一些TextBlock元素。

将其用作ContentControl的ContentTemplate时,布局将按预期显示。但是,如果我将DataTemplate用作ListView的ItemTemplate,就会忽略一些属性(TextLineBounds和Margin)。

在下面的截图中,我放置了一个ContentControl和一个ListView,其中一个项紧挨着,以说明问题。为了使问题更加明显,我在文本块的左边添加了彩色网格。

以下UserControl可用于在空白winrt项目中重现该问题。

<UserControl
    x:Class="ListViewRepro.DropInRepro"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="60"
    d:DesignWidth="300">
    <UserControl.Resources>
        <DataTemplate x:Key="ItemTemplate">
            <Grid Width="150">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="50" />
                    <ColumnDefinition Width="200" />
                </Grid.ColumnDefinitions>
                <StackPanel>
                    <Grid Height="18" Background="Yellow" />
                    <Grid Height="14" Background="Orange" />
                    <Grid Height="10" Background="GreenYellow" />
                </StackPanel>
                <StackPanel Grid.Column="1">
                    <TextBlock FontSize="20" Text="Header"
                               TextLineBounds="TrimToBaseline" />
                    <TextBlock FontSize="14.6" Text="Subheader"
                               TextLineBounds="TrimToBaseline" />
                    <TextBlock>Title</TextBlock>
                </StackPanel>
            </Grid>
        </DataTemplate>
    </UserControl.Resources>
    <StackPanel Orientation="Horizontal">
        <ContentControl ContentTemplate="{StaticResource ItemTemplate}" />
        <ListView ItemTemplate="{StaticResource ItemTemplate}">
            <x:String>dummy item</x:String>
        </ListView>
    </StackPanel>
</UserControl>

共有1个答案

詹甫
2023-03-14

默认的fontfamilylistviewitem中是不同的(它是“segoe UI”,而不是“global User interface”),因此如果您希望它在这两种情况下工作相同-您需要将字体显式指定为“segoe UI”或“global User interface”,它将工作相同。

似乎baselineoffset是这两种字体之间的区别之一。

 类似资料:
  • 我写了一个模板函数,它使用了另外两个模板函数(添加 在math_functions.cpp中,我对add有不同的专门化 我还编写了一个简单的测试程序: 这段代码编译时没有任何错误,但奇怪的是,当我调用mulvadd时,调用的函数是h文件中定义的默认模板,而不是cpp文件中的专用版本。发生这种情况的原因是什么?

  • 我在父pom的imported dependencyManagement部分中指定了库的版本。我确认我的有效pom只有一次出现这种依赖性。它位于dependencyManagement部分: 这将根据它覆盖可传递依赖项的版本。安装(并重新安装依赖项以匹配版本边界)后,组织。阿帕奇。专家插件:maven依赖插件:2.8:树打印: 但是(最初,没有重新安装依赖项)enforcer抱怨版本错误: 并显示

  • 当包装一个Bulma“field”样式的元素在一个有角度的组件中时,底部的边距是缺失的。field类是通过指令添加到组件中的,这是根据浏览器的正常工作。 我怀疑选择器可能有问题,但我想不出原因。 Stackblitz演示 app.component.html input.component.html Input.Component.TS 这个问题在某种程度上建立在这个答案的基础上

  • null 我已经在“Manage Jenkins”-->“Configure System”下配置了Maven设置。 当我在“预步骤”部分创建“调用顶级Maven目标”步骤时,所有工作都按照预期进行。在“目标”行中,我可以指定“-x”、“clean install”等,并且maven通过打印这些目标,例如: [DEBUG]正在从.../settings.xml读取全局设置 [DEBUG]正在使用.

  • 我正在使用PreferenceActivity向布局中添加PreferenceFragments。PreferenceActivity使用带有父主题的自定义样式。AppCompat。光我更新了colorPrimary、colorPrimaryDark和colorAccent的NoActionBar。在Lollipop上,首选项屏幕按预期显示,使用适当的颜色和文本样式,但是在KitKat上,我使用的

  • 我正在迁移现有的应用程序到Spring 5.0.0。M3 该应用程序有两个模板文件夹和。如果我为电子邮件模板指定以下配置,文件夹将被忽略;e、 g.我正在获取此文件夹中模板的。 我尝试过将参数设置为2,10等,这没有什么区别。如果我删除了解析器方法,则可以识别文件夹,但不能识别文件夹。 你知道会发生什么吗?