【发布时间】:2013-08-27 01:38:45
【问题描述】:
我的 WPF 应用程序有一个 ListBox,其 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 包含与 ListBox 相同宽度的 Border,Margin 为 0,Padding 设置为 2,0,0,0。
Border 包含一个 ContentPresenter,其宽度比包含它的 Border 小 29 个单位。 Border 上的 Padding 似乎占了 2 个单位。它的Margin 为0,没有填充属性。
如果我可以不让模板中的Buttons 更窄的话,我实际上想让这个窗口更窄一些。那 29 个单位的空间是从哪里来的?有没有办法改变它的大小?
【问题讨论】:
-
如果我理解正确,您可能需要将 ItemContainerStyle 设置为 show here。
标签: wpf layout listbox listboxitem