Вертикальная полоса прокрутки не появляется, когда элементы вида сетки превышают высоту экрана - PullRequest
1 голос
/ 10 ноября 2008

Я размещаю следующие выражения во второй строке моей таблицы в xaml:

<ScrollViewer VerticalScrollBarVisibility="Auto" Grid.Row="1">
     <ListView Name="listView" Margin="5" Grid.Row="1">

                <ListView.View>
                    <GridView AllowsColumnReorder="True">
                        <GridViewColumn DisplayMemberBinding="{Binding Path=DateTime}" Header="Date Time" Width="140"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Vehicle}" Header="Vehicle" Width="130"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=AlarmType}" Header="Alarm Type" Width="100"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Direction}" Header="Direction" Width="100"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Speed}" Header="Speed" Width="100"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Alarmed}" Header="Alarmed" Width="100"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=LoadType}" Header="Load Type" Width="100"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Status}" Header="Status" Width="110"/>
                    </GridView>
                </ListView.View>
            </ListView>     
        </ScrollViewer>
 </Grid>

Я связал listView.ItemSource с ObservableCollection, определенной в коде, чтобы заполнить данные списком. Когда количество элементов, добавленных в GridView, превысило высоту списка, вертикальная полоса прокрутки не появилась, как указано в XAML. Что я сделал не так? Ваш вклад очень ценится. Спасибо.

Ответы [ 5 ]

6 голосов
/ 10 ноября 2008

у меня работает:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <ScrollViewer VerticalScrollBarVisibility="Auto" Grid.Row="1">
            <ListView Name="listView" Margin="5" Grid.Row="1">

                <ListView.View>
                    <GridView AllowsColumnReorder="True">
                        <GridViewColumn DisplayMemberBinding="{Binding Path=.}" Header="Whatever" Width="140"/>
                    </GridView>
                </ListView.View>
            </ListView>
        </ScrollViewer>
    </Grid>
</Window>

Однако шаблон управления ListView содержит уже ScrollViewer, так что ScrollViewer будет отображаться внутри ListView по мере необходимости. Зачем вам оборачивать это в другое?

3 голосов
/ 10 ноября 2008

Убедитесь, что поля и отступы правильные. Полоса прокрутки может находиться за чем-то.

Установите внешнюю высоту контейнера с фиксированным значением, это может быть растяжение списка, чтобы оно никогда не показывало полосу прокрутки.

НТН

1 голос
/ 28 июня 2012

Попробуйте этот код:

ListView listView = new ListView();
listView.SetValue(Grid.RowProperty, 1);
listView.SetValue(Grid.ColumnProperty, 1);
MainGrid.Children.Add(listView);
0 голосов
/ 29 апреля 2012
<Grid x:Name="MainMenuButtonGrid">
  <StackPanel Margin="50,0,0,0">
    <TextBlock Text="Please select any employee" Foreground="Wheat"/>
    <ListView x:Name="listEmployeeDetail" SelectedValuePath="EmployeeID">
      <ListView.View>
        <GridView>
          <GridViewColumn Header="EmployeeName" Width="100" DisplayMemberBinding="{Binding EmployeeName}"></GridViewColumn>
        </GridView>
      </ListView.View>
    </ListView>
  </StackPanel>
</Grid>
0 голосов
/ 08 декабря 2009

Нет необходимости использовать ScrollViewer. Просто удалите ScrollViewer и используйте только ListView и попробуйте.

ListView listView = new ListView();
listView.SetValue(Grid.RowProperty, 1);
listView.SetValue(Grid.ColumnProperty, 1);
MainGrid.Children.Add(listView);

Нет необходимости указывать ширину и высоту для просмотра списка.

...