0

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

我的问题是 - 如何在不减小字体大小或增加窗口高度的情况下拉近项目的文本?有没有类似 HTML 的 padding 和 marging 的东西?或者其他一些技巧?

ps - 字体大小和窗口高度不得更改。

这就是它的外观:( 来源: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>

4

3 回答 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>
于 2009-09-24T14:58:02.173 回答
0

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

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

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

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

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

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

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

于 2009-09-24T19:29:45.167 回答
0

使用 Padding 设置为 0。此外,您可以设置 Negative Margins,这在许多情况下是强制文本进入某些布局的唯一方法(其中 Padding 不符合要求,并且容器布局是不可覆盖的。)

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

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

于 2009-09-25T06:57:51.427 回答