在ItemsControl中更紧密的项目

问题描述 投票:0回答:3

我有一个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>

wpf silverlight layout itemscontrol
3个回答
1
投票

您的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>

0
投票

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

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

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

* {VS Install path}\Common7\Packages\Debugger\Visualizers

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

* My Documents\Visual Studio 2005\Visualizers {VS2005}
* My Documents\Visual Studio 2008\Visualizers {VS2008}

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.