14

ListBoxWPF コントロールのリストを表示する があります。私の問題は、垂直スクロールバーが表示されているが、スクロール可能にする十分なアイテムがある場合でも無効になっていることListBoxです。関連する可能性のあるもう 1 つの事実は、これが に含まれていることIntegration.ElementHostです。

WPF初心者、ジム

の XAML は次のListBoxとおりです。

  // for brevity I removed the Margin and Tooltip attributes

  <Grid x:Class="Xyzzy.NoteListDisplay"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StackPanel Name="stackPanel" Orientation="Vertical"
                ScrollViewer.VerticalScrollBarVisibility="Visible">
        <StackPanel Orientation="Horizontal">
            <CheckBox Name="AllRecent" IsChecked="False" >View All Recent</CheckBox>
            <CheckBox Name="AscendingOrder" IsChecked="False">Descending Order</CheckBox>
            <Button Name="btnTextCopy" Click="btnCopyText_Click">Copy All</Button>
        </StackPanel>
        <ListBox Name="NoteList"
                 ScrollViewer.CanContentScroll="True"
                 ScrollViewer.VerticalScrollBarVisibility="Visible">
        </ListBox>
      </StackPanel>
  </Grid>

ListBoxまた、各項目に表示されるコントロールの XAML は次のとおりです。

  <UserControl x:Class="Xyzzy.NoteDisplay"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
      <StackPanel Orientation="Vertical">
        <StackPanel Orientation="Horizontal">
          <TextBlock Name="Heading" FontSize="10">Note Heading</TextBlock>
          <Button Name="btnCopyText" Height="20" FontSize="12"
                          Click="btnCopyText_Click">Copy
          </Button>
        </StackPanel>
        <TextBlock Name="Body" FontSize="14">Note Body</TextBlock>
      </StackPanel>
    </Grid>
  </UserControl>
4

8 に答える 8

34

を使用すると、スクロールバーの表示に問題が発生しましたStackPanelStackPanelそれは、すべての子を収容するために必要なだけの大きさであるためだと思います。レイアウトを再編成してStackPanelGrid代わりに)を削除して、それが役立つかどうかを確認してください。

于 2009-08-12T18:01:42.817 に答える
3

ねえ、何が起こっているのではないかと思います.ListBoxはすべてのアイテムに対して十分に拡張されていますが、ListBoxは実際にはContaining Controlの下部から消えています.

ListBox は実際に適切に停止しますか、それとも単に消えているように見えますか? ListBox に MaxHeight を設定してみて、スクロールバーが表示されるかどうかを確認してください。VerticalScrollBarVisibility を Auto に設定して、必要な場合にのみ表示できるようにする必要があります。

于 2009-08-12T17:59:38.390 に答える
2

これはかなり遅いですが、ListBox を使用している人は、おそらく StackPanel に含めるべきではありません。Listbox の親コントロールを StackPanel から DockPanel に切り替えて、LastChildFill=True (リストボックスが最後のコントロールだった場所) にすると、スクロールバーが完全に機能しました。

これが、上記の回答で問題が解決されなかった人に役立つことを願っています。

于 2013-02-07T22:58:07.940 に答える
0

うまく機能するこの問題の別の解決策は、 のScrollViewer周りにを配置することStackPanelです。

于 2012-05-17T14:34:05.973 に答える
0

Dave のものを変更した別の解決策は、ScrollViewer のみを使用することです。ScrollView の ScrollBar にマウスを置くことによってのみスクロールできます。ListBox がアイテムからアイテムへとジャンプする方法や、トップからアイテムが欠落している場合があるのが気に入らないので、この方法で使用します。目にも少し難しい。ScrollViewer のスムーズなスクロールが気に入っています。

于 2013-09-26T03:28:34.560 に答える