簡體   English   中英

列表框未使用Grid.Column中的所有可用空間-WPF

[英]ListBox does not use all available space within Grid.Column - WPF

我有一個已分配給Grid.Column 0的ListBox控件,該控件的寬度定義為'*'值,但是在呈現時,有相當大的空間沒有被使用。

我還注意到ListBox控件本身周圍存在某種邊界,但是我沒有在標記內添加邊界。

我的用戶界面(關注區域標記為紅色):

在此處輸入圖片說明

我的標記:

<Window.Resources>
        <DataTemplate x:Key="GameImagesTemplate" >
            <StackPanel Orientation="Vertical">
                <Image Source="{Binding FileInfo.FullName}" Margin="8,8,8,8" Height="70" Width="70" />
                <Label Content="{Binding Name}" Width="70" />
            </StackPanel>
        </DataTemplate>

        <DataTemplate x:Key="GameTemplate">
            <StackPanel>
                <Label Content="{Binding Name}" Background="Gray" FontSize="16" />
                <ListBox x:Name="imageContent" ItemsSource="{Binding FileList}" ItemTemplate="{StaticResource GameImagesTemplate}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
                    <ListBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapPanel Orientation="Horizontal" IsItemsHost="True" />
                        </ItemsPanelTemplate>
                    </ListBox.ItemsPanel>
                </ListBox>
            </StackPanel>
        </DataTemplate>
    </Window.Resources>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

        <ListBox x:Name="ContentList" ItemTemplate="{StaticResource GameTemplate}" Grid.Column="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled" />

        <StackPanel Grid.Column="1" Background="DarkGray">
            <Button Click="OnLoad">_Load</Button>
            <Button Click="OnSave">_Save</Button>
            <Button Click="OnAdd">_Add</Button>
            <Button Click="OnDelete">_Delete</Button>
        </StackPanel>
    </Grid>

我將如何解決這兩個問題。 它是ListBox控件的默認行為嗎?

非常感謝

是的,這是默認行為。

在對齊的情況下,看起來每個ListBoxItem都有一個WrapPanel ,沒有足夠的空間將其他項目放置在第1行上。由於ListBox上的HorizontalContentAlignment設置默認為Left,因此剩余空間未使用。 此設置又受默認ListBoxItem約束。 ListBox上設置HorizontalContentAlignment="Stretch"應該可以解決該問題。

外邊界來自BorderBrushBorderThickness的默認設置。 設置BorderThickness="0"將完全消除它。

還有其他一些默認的Padding設置,可以在默認的樣式和模板中增加一些間距。 如果您想了解更多信息,請在Blend中的項目中添加一個ListBox ,並復制其默認TemplateItemContainerStyle然后查看XAML。 在不需要選擇行為的情況下,也請考慮使用基本ItemsControl ,因為它沒有任何這些類型的默認設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM