Question

My WPF application has a window that contains a ListBox. For some reason that I don't understand, it started growing on screen today after items are inserted into it. I want its height to stay fixed and I don't want it to grow every time an item is inserted.

Here's the XAML for the window:

<Viewbox Stretch="Uniform">
    <Grid Background="{DynamicResource WindowBackground}"
          Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Grid Background="{DynamicResource AlarmTitleBackground}"
              Grid.Row="0"
              MouseLeftButtonDown="LeftMouseButtonDown">
            . . .
        </Grid>

        <Rectangle Fill="{DynamicResource AlarmTitleBackground}"
                   Grid.Row="1"
                   Height="4" />

        <Grid Background="{DynamicResource ControlBackground}"
              Grid.Row="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <Grid FocusManager.IsFocusScope="True"
                  Grid.Column="0"
                  Grid.Row="0"
                  Name="PendingAlarmScope">
                <ListBox Background="{DynamicResource TextBackground}"
                         HorizontalContentAlignment="Center"
                         IsSynchronizedWithCurrentItem="True"
                         Margin="5"
                         MinWidth="185"
                         VerticalAlignment="Stretch"
                         Name="AlarmsList"
                         SelectionChanged="AlarmsList_SelectionChanged" />
            </Grid>
            . . .
        </Grid>
    </Grid>
</Viewbox>

I found a post in a blog about a TextBox that kept growing as characters were typed. The author indicated that the TextBox was in a ScrollViewer with the HorizontalScrollBarVisibility property set to "Auto". They changed it to "Disabled" and this fixed it for them. I tried adding ScrollViewer.VerticalScrollBarVisiblility="Disabled" to the xaml but this didn't work. I also tried binding theListBox's MaxHeight property to theActualHeight` of another control that's the same exact height as I want & that didn't work, either.

How do I fix the Height of the ListBox without setting it? I want the ListBox to always fill the Grid cell it's in, and the window to grow and rescale itself for different screen resolutions.

Was it helpful?

Solution 2

After many hours of trying numerous things, I finally bit the bullet & set the Height of the ListBox to a value that I found using Snoop before it started growing. This stopped it from growing every time a new item was inserted. It was the only thing I could find to do that worked. A very frustrating day.

OTHER TIPS

<Grid Background="{DynamicResource ControlBackground}"
              Grid.Row="2">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

for grins would you try dropping the view box and some other stuff

<Grid Background="{DynamicResource WindowBackground}"
          Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Rectangle Fill="{DynamicResource AlarmTitleBackground}"
                   Grid.Row="1"
                   Height="4" />


                <ListBox Grid.Row="2" Background="{DynamicResource TextBackground}"
                         HorizontalContentAlignment="Center"
                         IsSynchronizedWithCurrentItem="True"
                         Margin="5"
                         MinWidth="185"
                         VerticalAlignment="Stretch"
                         Name="AlarmsList"
                         SelectionChanged="AlarmsList_SelectionChanged" />

    </Grid>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top