我的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
的垂直邊緣與其中的項目之間似乎有非常大的空間。使用探聽,我看到ListBoxItem
包含Border
也就是相同的寬度ListBox
,具有爲0的Margin
,和Padding
設置爲2,0,0,0。
Border
包含ContentPresenter
,其寬度比包含它的Border
小29個單位。 Border
上的Padding
似乎佔了2個單位。它的Margin
是0,它沒有填充屬性。
其實我想提出這個窗口,如果我可以窄一點,而不在模板中的任何較窄使得Buttons
。 29單位空間從哪裏來?有沒有辦法改變它的大小?
如果我理解正確的話,你可能要設置ItemContainerStyle作爲表演[這裏](http://stackoverflow.com/a/2924249/187697)。 – keyboardP