プログラムでWPFリストビューをスクロールすることはできますか?私はwinformsは、それをやっていない知っている?WPFリストビューをプログラムでスクロールするにはどうすればよいですか?
私は、上下に50単位スクロールすることについて話しています。一度にアイテムの高さ全体をスクロールしないでください。
プログラムでWPFリストビューをスクロールすることはできますか?私はwinformsは、それをやっていない知っている?WPFリストビューをプログラムでスクロールするにはどうすればよいですか?
私は、上下に50単位スクロールすることについて話しています。一度にアイテムの高さ全体をスクロールしないでください。
はい、ListViewからScrollViwerを取得する必要があります。ただし、一度アクセスできれば、そのメソッドを使用するか、スクロールをオーバーライドできます。メインコンテンツエリアを取得し、IScrollInfoインターフェイスの実装を使用することで、スクロールすることもできます。ここで
は、リストボックス、リストビューのようなもののScrollViwerコンポーネントを取得するには少しヘルパーなどpublic static DependencyObject GetScrollViewer(DependencyObject o)
{
// Return the DependencyObject if it is a ScrollViewer
if (o is ScrollViewer)
{ return o; }
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(o); i++)
{
var child = VisualTreeHelper.GetChild(o, i);
var result = GetScrollViewer(child);
if (result == null)
{
continue;
}
else
{
return result;
}
}
return null;
}
です。そして、あなたは、単に使用することができます.LineUp()と、このような.LineDown():
private void OnScrollUp(object sender, RoutedEventArgs e)
{
var scrollViwer = GetScrollViewer(uiListView) as ScrollViewer;
if (scrollViwer != null)
{
// Logical Scrolling by Item
// scrollViwer.LineUp();
// Physical Scrolling by Offset
scrollViwer.ScrollToVerticalOffset(scrollViwer.VerticalOffset + 3);
}
}
private void OnScrollDown(object sender, RoutedEventArgs e)
{
var scrollViwer = GetScrollViewer(uiListView) as ScrollViewer;
if (scrollViwer != null)
{
// Logical Scrolling by Item
// scrollViwer.LineDown();
// Physical Scrolling by Offset
scrollViwer.ScrollToVerticalOffset(scrollViwer.VerticalOffset + 3);
}
}
<DockPanel>
<Button DockPanel.Dock="Top"
Content="Scroll Up"
Click="OnScrollUp" />
<Button DockPanel.Dock="Bottom"
Content="Scroll Down"
Click="OnScrollDown" />
<ListView x:Name="uiListView">
<!-- Content -->
</ListView>
</DockPanel>
LineUpとLineDownで公開されている論理スクロールは、上記で使用したScrollToHorizontal/VerticalOffsetを使用する必要がある場合は、項目ごとにスクロールします。さらに複雑なスクロールをしたい場合は、other questionの回答を見てください。
ScrollIntoViewを試しましたか? また、閲覧した特定のアイテムではなく、現在の位置からのオフセットであれば、BringIntoViewを使用できます。
ありがとうございました、それらを見たことがありません。 –
垂直スクロールダウンとアップの両方で、 'VerticalOffset'に3を追加しています。それが正しいか?上には、addの代わりにsubtract 3が必要です。 – Syed