0

私の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含まれ、が0 で、2,0,0,0 に設定されていることがわかります。BorderListBoxMarginPadding

には、それを含むよりも 29 単位小さい幅の が含まBorderれます。上のは2 つのユニットを占めているようです。その値は 0 であり、パディング プロパティはありません。ContentPresenterBorderPaddingBorderMargin

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 に答える