在ItemsControl中更紧密的项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ItemsControl中更紧密的项目相关的知识,希望对你有一定的参考价值。

我有一个Itemscontrol,在绑定后包含两个项目。我的问题是第二项是从窗口区域出来的。

我的问题是 - 如何在不减小字体大小或增加窗口高度的情况下更接近物品的文本?是否有类似html的填充和破坏?或者其他一些技巧?

p.s - 不得更改窗口的字体大小和高度。

这就是它的样子:alt text (来源:timg.co.il

这是代码:

<UserControl x:Class="WpfApplication4.AnnouncmentsControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="86" Width="300">
<Grid>
    <ItemsControl Name="announcmentsListBox" ItemsSource="{Binding}">
    </ItemsControl>
</Grid>

答案

您的TextBlock的高度设置为40个单位。如果您完全删除该属性,您将看到项目间隔更自然。

所以你的XAML看起来更像是这样的:

<Grid>
    <ItemsControl Name="announcmentsListBox" ItemsSource="{Binding}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Path=Text}" />
                    <Button />
                </StackPanel>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Grid>
另一答案

我建议你使用Mole可视化工具来检查生成的项目。 Mole 4.2可以从http://karlshifflett.wordpress.com/mole-for-visual-studio/下载

只需要将“Mole.Visualizer.dll”复制到适当的visualizer文件夹即可。

如果您在Vista上进行开发并且在启用了Elevated Security的情况下运行,则必须在以下目录中安装Mole。

* {VS Install path}Common7PackagesDebuggerVisualizers

所有其他人下载并解压缩上述包。将Release包中的文件复制到:

* My DocumentsVisual Studio 2005Visualizers {VS2005}
* My DocumentsVisual Studio 2008Visualizers {VS2008}

您可以在代码中的某处设置一个易于访问的断点,然后在某个对象上启动Mole可视化工具。将可视树导航到itemscontrol。在生成的TextBlocks的Margin和Padding中查找值。它还会告诉您值是继承还是本地等。

另一答案

使用填充设置为0.此外,您可以设置负边距,在许多情况下,这是将文本强制转换为某些布局的唯一方法(Padding不适合帐单,容器布局不可覆盖。)

您还可以实现自己的项目面板模板并重新定义每个项目的布局以补偿引入的填充,但这不是必需的。但是,它可以让您控制所有项目的布局计算,以便您可以最好地适应每个项目(甚至更进一步,实现疯狂的新项目布局,如旋转木马,如许多RTM前演示的那样) WPF / Avalon的视频。)

希望有所帮助,这就是我的工作。

以上是关于在ItemsControl中更紧密的项目的主要内容,如果未能解决你的问题,请参考以下文章

在Jupyter中更严格的bqplot数字布局

某些项目未通过 ItemsSource 显示在 ItemsControl 中

在 WPF ItemsControl 中绕过栅栏原则

水平方向的 ItemsControl

嵌套 ItemsControl 的拉伸高度

将 ItemsControl 与可拖动项目相结合 - Element.parent 始终为空