Не удается заставить WPF ScrollViewer работать - PullRequest
1 голос
/ 23 августа 2011

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

Единственное, что кажется работающим, это если я явно установлю высоту ScrollViewer,но тогда размер не изменяется с помощью окна при изменении размера.

Нужно ли мне использовать сетку?

Извините, если это очевидно;Я относительно новичок в WPF.

Заранее благодарен за любую помощь!

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         d:DesignWidth="566" Width="719" >

    <StackPanel VerticalAlignment="Stretch"  >
        <Menu HorizontalAlignment="Stretch" Name="Menu1" VerticalAlignment="Stretch" Width="Auto">
            <MenuItem Header="_File" Name="MenuItem1">
                <MenuItem Header="_Print" Name="MenuItem2" />
            </MenuItem>
        </Menu>

        <Canvas x:Name="SearchCanvas"  Width="681" Height="55">
            <ComboBox Canvas.Left="6" Canvas.Top="0" Height="22" x:Name="cbLookupField" Width="302" Text="" SelectedIndex="0">
                <ComboBoxItem Content="Reference Name" />
                <ComboBoxItem Content="Matter" />
                <ComboBoxItem Content="Client Loan Number" />
            </ComboBox>
            <TextBox KeyDown="tbLookup_KeyDown" Canvas.Left="6" Canvas.Top="28" Height="23" x:Name="tbLookup" Width="302" />

            <Button Canvas.Left="314" Canvas.Top="27" Content="Search" Height="24" Name="btnSearch" Width="106" />

            <ListView MouseDoubleClick="lvSearchResults_MouseDoubleClick" 
                      ItemsSource="{Binding Tables[0]}"  
                      Canvas.Left="-8" Canvas.Top="57" Height="129" Name="lvSearchResults" Width="697" Visibility="Hidden">
                <ListView.View>
                    <GridView x:Name="gvResultsGridView"/>
                </ListView.View>
            </ListView>
        </Canvas>

        <ScrollViewer  x:Name="ScrollViewer1" VerticalScrollBarVisibility="Visible">
            <Frame Height="Auto" Source="Full Report.xaml" VerticalAlignment="Stretch" x:Name="Frame1" />
        </ScrollViewer>
    </StackPanel>
</Window>

1 Ответ

3 голосов
/ 23 августа 2011

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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...