如何在插入新项目时阻止Listbox在屏幕上增长

时间:2014-03-03 21:22:50

标签: c# wpf xaml listbox

我的WPF应用程序有一个包含ListBox的窗口。由于某种原因,我不明白,它插入项目后,今天开始在屏幕上增长。我希望它的高度保持固定,我不希望每次插入一个项目时它都会增长。

这是窗口的XAML:

<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>

我在博客中发现了一篇关于TextBox的帖子,该帖子随着字符的输入而不断增长。作者表示,TextBox位于ScrollViewerHorizontalScrollBarVisibility属性设置为“自动”。他们把它改成了“残疾人”,并为他们修好了。我尝试添加另一个控件的ScrollViewer.VerticalScrollBarVisiblility="Disabled" to the xaml but this didn't work. I also tried binding the ListBox的MaxHeight property to the ActualHeight`,它与我想要的高度相同。那也行不通。

如何在不设置的情况下修复Height的{​​{1}}?我希望ListBox始终填充它所在的ListBox单元格,以及为不同的屏幕分辨率增长和重新缩放的窗口。

2 个答案:

答案 0 :(得分:1)

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

对于grins你会尝试删除视图框和其他一些东西

<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>

答案 1 :(得分:1)

经过几个小时的尝试,我终于咬紧牙关&amp;将Height的{​​{1}}设置为我在使用Snoop开始增长之前找到的值。每次插入新项目时,都会阻止它增长。这是我能找到的唯一有用的东西。这是一个非常令人沮丧的日子。