簡體   English   中英

列自動網格中的列表框超過了WPF中的父級寬度

[英]Listbox in column auto grid exceed parent width in wpf

假設我有以下xaml:

<Grid MaxHeight="200" d:LayoutOverrides="Width">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <ListBox Height="170" ScrollViewer.HorizontalScrollBarVisibility="Visible" ItemsSource="{Binding DataModel.LocalData.ListFabricRules}" IsEnabled="{Binding DataModel.LocalData.Enabled}" SelectedItem="{Binding DataModel.LocalData.ListFabricRulesSelected}" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <TextBlock Text="{Binding Descript}" />
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    <StackPanel Grid.Column="1" Orientation="Vertical" d:LayoutOverrides="Height" Margin="10,0" IsEnabled="{Binding DataModel.LocalData.EnabledRules}">
        <Button Content="Test" />
    </StackPanel>
</Grid>

布局的目標是使列表框填充可用空間(在列中),並且在列表框的右側有一個按鈕。 問題如下:當列表框顯示水平滾動時(因為包含的文本很大),其寬度增量會更改網格比例,因此按鈕向右移動,而不考慮邊距,並且比主網格占用更多的空間。 將主網格放在Scrollviewer中時,滾動會部分隱藏。 主網格的主機是usercontrol。

單擊此處,您可以看到圖像沒有列表框的水平滾動。 您可以滾動滾動查看器。在此捕獲中沒有問題

在此圖像中(水平)有大項目,因此列表框中的水平滾動是可見的。 在這種情況下,scrollviewer的滾動部分隱藏。 這是因為列表框具有更大的寬度。 我不知道為什么

這里的問題是,您沒有將列表框的寬度定義為“兩列均為自動”。 要解決此問題,必須使用*設置寬度的百分比,或者使用Max或MinWidth。

<Grid MaxHeight="200" d:LayoutOverrides="Width">
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="80*"/>
    <ColumnDefinition Width="20*"/>
</Grid.ColumnDefinitions>
<ListBox Height="170" ScrollViewer.HorizontalScrollBarVisibility="Visible" ItemsSource="{Binding DataModel.LocalData.ListFabricRules}" IsEnabled="{Binding DataModel.LocalData.Enabled}" SelectedItem="{Binding DataModel.LocalData.ListFabricRulesSelected}" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <TextBlock Text="{Binding Descript}" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
<StackPanel Grid.Column="1" Orientation="Vertical" d:LayoutOverrides="Height" Margin="10,0" IsEnabled="{Binding DataModel.LocalData.EnabledRules}">
    <Button Content="Test" />
</StackPanel>

暫無
暫無

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

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