【问题标题】:How to make scrollbar over all of the elements wpf?如何在所有元素wpf上制作滚动条?
【发布时间】:2022-01-20 21:00:05
【问题描述】:

有一个包含列表视图的滚动查看器,并且滚动查看器上有一个列表视图。并且在列表视图上滚动时它不会滚动,但是当您滚动列表视图时(在不在列表视图后面的滚动查看器区域上)。我该如何解决这个问题? 我的代码:

 <ScrollViewer Background="#111" HorizontalScrollBarVisibility="Disabled" FlowDirection="LeftToRight" Grid.Row="1" >

            <Grid Grid.Row="1">
                <StackPanel   Background="#111" HorizontalAlignment="Center">

                    <ListView  BorderThickness="2" HorizontalAlignment="Right" ItemsSource="{Binding MyList}">
                     
                            //My codes

                    </ListView>



                </StackPanel>
            </Grid>

   </ScrollViewer>

【问题讨论】:

标签: c# wpf xaml


【解决方案1】:

ScrollViewer 允许在比实际大小更小的区域内显示内容。对于滚动所有元素,您可以尝试参考以下代码。

<Window x:Class="ScrollDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ScrollDemo"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <ScrollViewer>
        <Grid Height="500">
            <Grid.RowDefinitions>
                <RowDefinition Height="30"/>
                <RowDefinition Height="100"/>
            </Grid.RowDefinitions>
            <TextBlock Text="scroll"/>
            <ScrollViewer  Background="#111" HorizontalScrollBarVisibility="Disabled" FlowDirection="LeftToRight" Grid.Row="1" >
                <ListView  x:Name="lv" BorderThickness="2" HorizontalAlignment="Right" ItemsSource="{Binding }">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Width="100" Header="Name" DisplayMemberBinding="{Binding Name}"/>
                            <GridViewColumn Width="100" Header="Age" DisplayMemberBinding="{Binding Age}"/>
                        </GridView>
                    </ListView.View>
                </ListView>
            </ScrollViewer>
        </Grid>
    </ScrollViewer>
</Window>

MainWindow.xaml.cs:

using System.Collections.Generic;
using System.Windows;
namespace ScrollDemo
{
  public partial class MainWindow : Window
  {
    List<Item> MyList;
    public MainWindow()
    {
      InitializeComponent();
      MyList = new List<Item>();
      for (int i = 0; i < 10; i++)
      {
        MyList.Add(new Item(){  Name= $"list{ i }",Age=i });
      }
      lv.ItemsSource=MyList;
    }
  }
  public class Item
  {
    public string Name { get;set;}
    public int Age { get;set;}
  }
}

The result

【讨论】:

  • 感谢您的回答。这不是我真正想要的东西,但这对我修复错误很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 2021-03-09
  • 2020-03-14
相关资源
最近更新 更多