簡體   English   中英

WPF'*'字符間距不正確

[英]WPF '*' character not spacing correctly

我在Windows Universal App中有一個ListBox ,每個ListBoxItem是一個Grid其中的文本和圖像的列各不相同。 對於某些ColumnDefinitions我具有特定的寬度,然后嘗試在剩余的列之間均勻分配剩余的空間。 據我了解, *字符可以做到這一點,但看起來更像是Auto並僅分配必要的空間。

因此,我不是foo bar baz而是foobarbaz

有誰知道我在做什么錯?

<ListBox x:Name="ItemsListBox" Grid.Row="3"  Margin="0, 80, 0, 80" VerticalAlignment="Top" ItemsSource="{Binding Items}" Loaded="ItemsListBox_Loaded">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid x:Name="ItemsListBoxGrid">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="60" />
                    <ColumnDefinition Width="150" />
                    <ColumnDefinition Width="45" />
                    <ColumnDefinition Width="100" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Image Grid.Column="0" Height="40" Source="{Binding Img}" />
                <TextBlock Grid.Column="1"  Text="{Binding Name}" />
                <TextBlock Grid.Column="2" Text="{Binding Level}" />
                <TextBlock Grid.Column="3" Text="{Binding Rarity}" />
                <TextBlock Grid.Column="4" Text="{Binding Type}" />
                <TextBlock Grid.Column="5" Text="{Binding MinSaleOffer}" />
                <TextBlock Grid.Column="6" Text="{Binding MaxBuyOffer}" />
                <TextBlock Grid.Column="7" Text="{Binding Margin}" />
                <TextBlock Grid.Column="8" Text="{Binding Supply}" />
                <TextBlock Grid.Column="9" Text="{Binding Demand}" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

ListBox的默認樣式將其HorizontalContentAlignment屬性設置為Left ,這反過來會使所有視覺效果左對齊,而不是拉伸到可用空間。 因此,您要尋找的“剩余空間”實際上為零。

采用:

<ListBox HorizontalContentAlignment="Stretch">`
    <!-- etc ... -->
</ListBox>

您沒有做錯任何事,只是默認容器(ListBoxItem)樣式將內容向左對齊,從而防止了Grid進行度量/排列。
只需將以下內容添加到您的ListBox中即可。

<ListBox.ItemContainerStyle>
     <Style TargetType="ListBoxItem">
          <Setter Property="HorizontalAlignment" Value="Stretch"/>
          <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
     </Style>
</ListBox.ItemContainerStyle>

暫無
暫無

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

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