scrollviewer 相关问题

滚动查看器是一种用户界面构造,它为放置在其中的任何控件(或控件层次结构)提供滚动区域。


在 WPF 框架上设置 ScrollViewer(用于垂直滚动)的正确方法?

有谁知道在框架上定义垂直滚动条之间的区别,如下所示: 有谁知道在这样的框架上定义垂直滚动条之间的区别: <ScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Auto"> <Frame Name="Frame1" ScrollViewer.CanContentScroll="True" /> </ScrollViewer> 或者像这样: <ScrollViewer Grid.Row="2"> <Frame Name="Frame1" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="True" /> </ScrollViewer> 此框架嵌套在 WebBrowser 控件中,并将其设置为正确显示垂直滚动条的第一种方式,并且仅在需要滚动(自动)时才可见。当我以第二种方式设置它时,垂直滚动条可以工作,但即使不需要滚动(可见)也始终可见。 我将使用第一个选项,因为它满足我的需求,但如果我设置不正确,我不想在以后感到惊讶。 谢谢! 当您使用 ScrollViewer.VerticalScrollBarVisibility 或 ScrollViewer.HorizontalScrollBarVisibility 附加属性时,它对 Frame 没有影响。 <ScrollViewer Margin="225.667,-4,0,296.939" HorizontalAlignment="Left" Width="221.667"> <Frame Content="Frame" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Hidden" Source="UserControl2.xaml" Background="#FFDE5454"/> </ScrollViewer> 在上面的示例中,我使用了 ScrollViewer.VerticalScrollBarVisibility 和 ScrollViewer.HorizontalScrollBarVisibility 附加属性。该代码的结果与您的预期完全相反。没有HorizontalScrollBar可见...但您仍然可以看到VerticalScrollBar。 这就是为什么你应该使用它 <ScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Auto"> <Frame Name="Frame1" /> </ScrollViewer> 当您尝试使用 ListBox 时,结果会有所不同。 这是以下代码的结果: <ScrollViewer Margin="225.667,0,0,12.761" Height="280.178" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="221.667"> <ListBox ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Visible" Background="Orange" ItemsSource="{Binding Collection}" DisplayMemberPath="Property1" /> </ScrollViewer> 那是因为这些附加属性现在影响 ListBox 内的 ScrollViewer,而不是您所期望的父级 ScrollViewer。 因此,从这个小实验中,我假设 ScrollViewer.VerticalScrollBarVisibility 附加属性适用于您希望能够影响 Control 模板中存在的 ScrollViewer 而不是父级 ScrollViewer 的情况。所以我认为它不起作用,例如 DockPanel.Dock 对父级 DockPanel 生效。 这对我有用...... <ScrollViewer x:Name="scrollPrime" HorizontalAlignment="Left" Height="260" Margin="10,185,0,0" VerticalAlignment="Top" Width="450" Foreground="DarkGray" Background="#353340" FontSize="20" CanContentScroll="True" VerticalScrollBarVisibility="Auto"> <TextBox x:Name="scrollPrimeFrame" Text="scrollPrime Frame" TextWrapping="Wrap" Background="#FFDE5454"/> </ScrollViewer> 几天前开始使用 C#,这个问题很快就出现了...将上述解决方案从各个平台的代码片段拼凑在一起。 我将一个串联字符串传递给scrollPrimeFrame进行测试,并且可滚动性是必须的。 我尝试了一个框架,因此得名 TextBox,但它对我不起作用。

回答 2 投票 0

如何在WinUI 3中绑定ItemsRepeater当前页面的索引?

我有包含图像 ItemsRepeater 的 ScrollViewer,我想在滚动图像时在 TextBox 中绑定 ItemsRepeater 的当前索引页。 这是我的 .xaml 代码: 我有 ScrollViewer 包含 ItemsRepeater 图像,我想在滚动图像时绑定到 TextBox ItemsRepeater 的当前索引页面。 这是我的 .xaml 代码: <StackPanel Orientation="Horizontal"> <TextBlock> <Run Text="{x:Bind ViewModel.Pages.Count, Mode=OneWay}"/> <Run Text=" / "/> </TextBlock> <TextBox Text="{x:Bind ViewModel.PageIndex, Mode=TwoWay}" LostFocus="PageIndexTextBox_LostFocus" x:Name="PageIndexTextBox" InputScope="Number"/> </StackPanel> <ScrollViewer x:Name="scroll" ZoomMode="Enabled" Grid.Row="1" IsTabStop="True" IsVerticalScrollChainingEnabled="True" HorizontalAlignment="Stretch" VerticalAlignment="Top" HorizontalScrollMode="Enabled" HorizontalScrollBarVisibility="Hidden" VerticalScrollMode="Enabled" VerticalScrollBarVisibility="Auto" ViewChanged="ScrollViewer_ViewChanged"> <ItemsRepeater ItemsSource="{x:Bind ViewModel.Pages, Mode=OneWay}" MaxWidth="{Binding ElementName=scroll, Path=ActualWidth}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" x:Name="PdfImageRepeater"> <ItemsRepeater.ItemTemplate> <DataTemplate x:DataType="pdfImage:PdfImage"> <Grid Padding="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> <Image Source="{x:Bind Image, Mode=OneWay}" Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> </DataTemplate> </ItemsRepeater.ItemTemplate> <ItemsRepeater.Layout> <StackLayout Orientation="Vertical"/> </ItemsRepeater.Layout> </ItemsRepeater> </ScrollViewer> 这是我的 .xaml.cs 代码中: private void PageIndexTextBox_LostFocus(object sender, RoutedEventArgs e) { if (int.TryParse(PageIndexTextBox.Text, out int pageIndex)) { pageIndex -= 1; if (pageIndex >= 0 && pageIndex < ViewModel.Pages.Count) { var pageItem = PdfImageRepeater.GetOrCreateElement(pageIndex); pageItem.UpdateLayout(); pageItem.StartBringIntoView(); } } } 如何在 WinUI 3 中添加显示当前 ScrollViewr 页面索引的选项? 如果可以固定物品的高度,例如: <ItemsRepeater.ItemTemplate> <DataTemplate x:DataType="local:Member"> <Grid MinHeight="50" MaxHeight="50"> <!-- Item Content --> </Grid> </DataTemplate x:DataType="local:Member"> </ItemsRepeater.ItemTemplate> 你可以这样做: private ScrollBar? VerticalScrollBar { get; set; } private void ItemsRepeaterScrollViewer_Loaded(object sender, RoutedEventArgs e) { if (sender is not ScrollViewer scrollViewer || scrollViewer.FindDescendant<ScrollBar>(x => x.Orientation is Orientation.Vertical) is not ScrollBar verticalScrollBar) { return; } VerticalScrollBar = verticalScrollBar; VerticalScrollBar.ValueChanged += VerticalScrollBar_ValueChanged; } private void VerticalScrollBar_ValueChanged(object sender, RangeBaseValueChangedEventArgs e) { MemberIndexNumberBox.Value = Math.Round(e.NewValue / 50); } private void MemberIndexNumberBox_ValueChanged(NumberBox sender, NumberBoxValueChangedEventArgs args) { if (VerticalScrollBar is null) { return; } ItemsRepeaterScrollViewer.ScrollToVerticalOffset(args.NewValue * 50); } FindDescendant扩展来自CommunityToolkit.WinUI.ExtensionsNuGet包。

回答 1 投票 0

WPF - 具有固定标题/行的 ScrollViewer

创建具有固定标题的 ScrollViewer(始终保持在顶部而忽略滚动的控件)但仍水平滚动的 ScrollViewer 的最简单方法是什么。 我应该写自己的 ScrollViewer

回答 3 投票 0

在 DataGrid 内滚动父容器

我有这个自定义数据网格。我想要实现的是,当用户将鼠标放在 DataGrid 内部(没有最大高度)时,它应该允许滚动整个父组件...

回答 1 投票 0

如何在 WinUI 3 中按索引滚动到 ItemsRepeater 中的特定项目

我有 BitmapImage 类型图像的 itemsRepeater, ScrollViewer 中存在 itemsRepeater。 我希望用户输入编号并滚动到 ItemsRepeater 中该索引中的图像。 我怎么办...

回答 1 投票 0

WPF:在自定义滚动查看器中,垂直滚动条比水平滚动条粗

我正在使用 WPF 作为应用程序。在XAML代码中,我定义了水平滚动条和垂直滚动条的宽度和高度。不过垂直滚动条还是比较粗...

回答 1 投票 0

C# WPF 添加滚动查看器到网格打破行高度

当我将 ScrollViewer 添加到网格时,行的高度被破坏,如图所示。我该如何修复它? 使用 ScrollViewer(不好): 没有 ScrollViewer(好): 当我添加网格高度时...

回答 1 投票 0

如何在 MVVM WPF 应用程序中控制 ListBox 的滚动位置

我有一个启用垂直滚动的大列表框,我的 MVVM 有新建和编辑 ICommand。 我正在将新项目添加到集合的末尾,但我希望滚动条也自动定位到...

回答 5 投票 0

有没有办法防止父容器调整大小时缩略图被切断

我创建了一个带有可以水平滚动的缩略图的图像查看器。图像是针对选定的功能动态加载的,并且数量各不相同。图像查看器调整大小以适合屏幕...

回答 1 投票 0

每当在 wpf 中滚动任何一个 ScrollViewer 时,两个 ScrollViewer 就会同步滚动

我已经浏览了该主题: 将两个 VerticalScrollBar 相互绑定 它几乎帮助实现了目标,但仍然缺少一些东西。就是向左移动滚动条-...

回答 6 投票 0

同时使用scrollviewer和richtextbox时,它在WPF中逐行写入文本中的字母

我想将文本框中的文本打印到richtextboxes中,并在覆盖网格时出现滚动条。当您同时使用richtextbox和scrollviewer时,...

回答 1 投票 0

如何在 C# 中找到 Scrollviewer 的垂直滚动条宽度

我有一个 ScrollViewer,其中我显示垂直滚动条,现在在更改系统分辨率时我想获取滚动条的宽度。我在那里浏览了一篇 StackOverflow 帖子...

回答 3 投票 0

C# WPF datagrid行高不会超过datagrid高度

在C#、WPF和Visual Studio中,我在数据网格中显示来自sql数据库的一些数据,在描述列中它可能有很多行,目前它会截断行的显示

回答 1 投票 0

在代码中访问WinUI中Flyout的隐式ScrollViewer

我有一个浮出控件,其中的内容比浮出控件的长度长,因此激活了垂直滚动条。我希望获得底层的 ScrollViewer 以便我可以重置滚动位置

回答 1 投票 0

在WPF中创建一个自定义ScrollViewer,它可以正常调整元素大小,并在子宽度小于其最小值时显示水平滚动条?

我正在开发一个 WPF 应用程序,我需要创建一个自定义 ScrollViewer,它可以根据可用宽度自动调整其子元素的大小。另外,当c的最小宽度...

回答 1 投票 0

如何制作可滚动、可调整大小的列表视图?

本来我想让listview依赖于窗口高度参数,但老实说我觉得这个解决方案不切实际,相信它可以做得更好。 所以,这是我感兴趣的对象: ...

回答 1 投票 0

DataGrid 周围的 WPF ScrollViewer 影响 DataGridColumn 宽度

我在 ScrollViewer 内的 UserConrol 中遇到 DataGrid 问题。 MainWindow 有一个 ScrollViewer 和一个 ContentControl 来呈现多个视图(UserControls): 我在 ScrollViewer 内的 UserConrol 中遇到 DataGrid 问题。 MainWindow 中有一个 ScrollViewer 和一个 ContentControl 来呈现多个视图(UserControls): <Border Grid.Column="2" Grid.Row="2" Margin="0, 1, 1, 0" Style="{StaticResource StackPanelBorder}"> <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> <ContentControl Content="{Binding CurrentView}"/> </ScrollViewer> </Border> UserControl(完整结构(简化)): <Grid> <Grid> <Grid> <Border BorderBrush="Black" BorderThickness="1"> <DataGrid HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="auto" AutoGenerateColumns="False" ItemsSource="{Binding ActiveErrors}" CanUserResizeColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False"> <DataGrid.Columns> <DataGridTextColumn Header="Index" Binding="{Binding Key}"></DataGridTextColumn> <DataGridTextColumn Header="Error code" Binding="{Binding Value.errorCode}"></DataGridTextColumn> <DataGridTextColumn Header="Occurences" Binding="{Binding Value.occurence}"></DataGridTextColumn> <DataGridTextColumn Header="Timestamp" Binding="{Binding Value.timestamp}"></DataGridTextColumn> <DataGridTextColumn Width="*" MinWidth="200" Header="Error message" Binding="{Binding Value.description}"></DataGridTextColumn> <DataGridTextColumn Header="Param" Binding="{Binding Value.parameter}"></DataGridTextColumn> </DataGrid.Columns> <DataGrid.CellStyle> <Style TargetType="{x:Type DataGridCell}"> <Setter Property="FontWeight" Value="Medium"/> </Style> </DataGrid.CellStyle> </DataGrid> </Border> </Grid> </Grid> </Grid> 我需要我的列能够自动调整大小和列错误消息以填充所有可用空间。所有这些都在 ScrollViewer 中,这是这个视图和许多其他视图 (UserControls) 所必需的,所以我无法摆脱它。 在 MainWindow 中没有 ScrollViewer 一切正常(列错误消息填充所有可用空间,能够调整大小并且 GridView 没有空的最后一列): 解决方案解决方案 1(设置 GridView.HorizontalScrollBarVisibility="Disabled")不起作用(因为我猜整个 UserControl 都在 ScrollViewer 中) 解决方案 解决方案 2 也无法按我的意愿工作 - DataGrid 变得能够增加其宽度但不能减少,因此列错误消息会填充所有可用空间,但前提是窗口正在伸展。 请帮忙,这是我的毕业作品。

回答 0 投票 0

当使用触摸时,ComboBox弹出框内的ScrollViewer会从头开始溢出。

我有一个 ScrollViewer 嵌套在 ComboBox 的 Popup 里面。我相信这是一个标准的设计。即使没有设置任何DependencyProperties,这个ScrollViewer有一个奇特的行为,当用一个 ...

回答 1 投票 0

ScrollViewer鼠标滚轮不滚动

我目前正在做我的第一个WPF项目,并试图使一个ListView可以滚动。起初,我认为可以通过简单地限制ListView的宽度和高度来轻松实现。

回答 6 投票 58

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.