在ItemsControl中更紧密的项目

时间:2009-09-24 14:54:30

标签: wpf silverlight layout 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>

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

下载

只需将“Mole.Visualizer.dll”复制到相应的可视化文件夹即可。

  

如果您正在开发Vista并且正在开发   以高级安全性运行   启用后,您必须在。中安装Mole   以下目录。

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

所有其他人下载并解压缩   以上包裹。复制文件   将包发布到:

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

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

答案 2 :(得分:0)

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

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

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