0

ListBox我的WPF 应用程序有一个ItemTemplate如下所示:

<DataTemplate x:Key="DomainTemplate" DataType="DomainViewModel">
    <Border BorderBrush="{Binding Converter={StaticResource BrushConverter}, Path=IsSelected}"
            BorderThickness="3"
            Grid.Column="0"
            Name="SelectedBorder"
            Padding="5">
        <Button Click="SelectDomain_Click"
                FontSize="16"
                FontWeight="Bold"
                IsEnabled="{Binding Path=CurrentSiteIsValid, RelativeSource={RelativeSource AncestorType={x:Type c:DomainPicker}}}"
                MinHeight="60"
                Tag="{Binding Path=DomainId}"
                Width="120">
            <TextBlock Text="{Binding Path=Name}"
                       TextAlignment="Center"
                       TextWrapping="WrapWithOverflow" />
        </Button>
    </Border>
</DataTemplate>

窗口的宽度由ListBox. 这是设计使然。ListBox的垂直边缘和其中的项目之间似乎有一个非常大的空间。使用 Snoop,我看到ListBoxItem包含的 aBorder与 的宽度相同ListBox,aMargin为 0,并Padding设置为 2,0,0,0。

Border包含 a ,其ContentPresenter宽度比Border包含它的 小 29 个单位。上似乎占了 2 个单位PaddingBorderMargin是 0 并且没有填充属性。

如果可以的话,我实际上想让这个窗口更窄一点,而不会使Buttons模板中的 更窄。那 29 个单位的空间是从哪里来的?有没有办法改变它的大小?

4

1 回答 1

0

我也遇到过这个问题,我使用 WrapPanel 作为 ListBox 的 ItemPanel,由于您提到的问题,在某些情况下,我最终在项目之间出现了间隙。这是修复:

<ListBox.ItemContainerStyle>
   <Style TargetType="ListBoxItem">
      <Setter Property="Padding" Value="0"/>
   </Style>
</ListBox.ItemContainerStyle>
于 2013-09-06T19:55:29.733 回答