使用ScrollViewer装饰项目集合控件时,性能似乎会降低.在我正在处理的特定应用程序中,当我使用ScrollViewer装饰VirtualizingStackPanel时,应用程序似乎受到了很大的打击.我试图在这个特定的容器中加载250个项目,希望用户可以滚动浏览所有250个项目.有人可以了解一下ScrollViewer的内部结构,以及为什么它的包含可以减慢应用程序的初始负载?
<ScrollViewer
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto"
Visibility= "Visible">
<ListView ItemsSource="{Binding EmployeeAccounts}">
<ListView.ItemsPanel >
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
谢谢
我创建了一个页面,其中有很多来自用户的输入.因此用户应该能够向下滚动以便能够按上传按钮.要在页面上向下滚动,我在网格外部使用了ScrollViewer.我能够滚动但页面在向下滚动后继续向后滚动.
这是我的代码:
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanelButtom" Grid.Row="1" >
<ScrollViewer >
<Grid x:Name="ContentPanel" Background="black">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="154" />
<ColumnDefinition Width="326" />
</Grid.ColumnDefinitions>
<Image Height="109" HorizontalAlignment="Left" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="167" Margin="23,19,0,0" Source="{Binding Path=ImageSoruce, Mode=TwoWay}" Grid.ColumnSpan="2" />
<TextBox Height="71" HorizontalAlignment="Left" Margin="12,161,0,0" Name="nameInput" Text="{Binding Path=Name, Mode=TwoWay}" VerticalAlignment="Top" Width="430" Grid.ColumnSpan="2" />
<TextBlock Height="56" HorizontalAlignment="Left" Margin="23,134,0,0" Name="nameLabel" Text="Name" VerticalAlignment="Top" Width="130" FontSize="25" />
<TextBlock FontSize="25" Height="60" HorizontalAlignment="Left" Margin="23,238,0,0" Name="descriptionLabel" Text="Description" VerticalAlignment="Top" Width="130" />
<TextBox Height="72" HorizontalAlignment="Left" Margin="12,265,0,0" Name="descriptionInput" Text="{Binding Path=Description, Mode=TwoWay}" VerticalAlignment="Top" Width="430" …Run Code Online (Sandbox Code Playgroud) 我想同步2个滚动查看器.请让我知道如何获得两个scrollviewer的滚动事件,然后同步它们?
我有一个ScrollViewer,它包含一个包含2个ListView的Horizontal StackPanel.
我的目标是让2个ListViews一起滚动.我遇到的问题是我无法将ListView中的内置ScrollViewers禁用...无论我做什么,它们都会继续独立滚动.我真的一定要错过一些东西......任何帮助都会受到赞赏.
这是我的XAML:
<ScrollViewer VerticalScrollBarVisibility="Visible"
HorizontalScrollBarVisibility="Disabled"
ZoomMode="Disabled"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="830"
Height="500">
<StackPanel x:Name="teesSP"
HorizontalAlignment="Left"
Height="500"
Width="830"
Orientation="Horizontal"
VerticalAlignment="Top">
<ListView x:Name="timesLV1"
HorizontalAlignment="Left"
Width="130"
Height="500"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollMode="Disabled"
ScrollViewer.IsHorizontalRailEnabled="False"
ScrollViewer.IsHorizontalScrollChainingEnabled="False"
ScrollViewer.IsScrollInertiaEnabled="False"
ScrollViewer.IsVerticalRailEnabled="False"
ScrollViewer.IsVerticalScrollChainingEnabled="False"
ScrollViewer.IsZoomChainingEnabled="False"
ScrollViewer.IsZoomInertiaEnabled="False"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollMode="Disabled"
BorderThickness="2"
BorderBrush="Black"
VerticalAlignment="Top"
ItemTemplate="{StaticResource TimeTileTemplate}"
SelectionMode="Single"
SelectionChanged="timesLV_Click" />
<ListView x:Name="timesLV2"
HorizontalAlignment="Left"
Width="700"
Height="500"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollMode="Disabled"
ScrollViewer.IsHorizontalRailEnabled="False"
ScrollViewer.IsHorizontalScrollChainingEnabled="False"
ScrollViewer.IsScrollInertiaEnabled="False"
ScrollViewer.IsVerticalRailEnabled="False"
ScrollViewer.IsVerticalScrollChainingEnabled="False"
ScrollViewer.IsZoomChainingEnabled="False"
ScrollViewer.IsZoomInertiaEnabled="False"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollMode="Disabled"
BorderThickness="2"
BorderBrush="Black"
VerticalAlignment="Top"
ItemTemplate="{StaticResource TimeTileTemplate}"
SelectionMode="Single"
SelectionChanged="timesLV_Click" />
</StackPanel>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud) 我使用RichTextBlock显示一些文本,RichTextBlock在滚动查看器中,代码如下所示:
<ScrollViewer Grid.Column="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Orientation="Vertical" Margin="12,0">
<TextBlock x:Name="TitleRun" FontSize="26" FontWeight="SemiBold" />
</StackPanel>
<RichTextBlock x:Name="MRichTextBlock" Grid.Row="1" Padding="12" FontSize="18">
</RichTextBlock>
</Grid>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
当我的应用程序在平板电脑上运行时,只要我用两根手指在滚动查看器区域进行捏合,RichTextBlock就会放大或缩小,这是不可取的.
所以我想知道在这种情况下如何禁用缩放行为.
提前致谢.
我想允许使用a单击并拖动滚动ScrollViewer(即单击任意位置ScrollViewer并向上或向下拖动,它将相应地滚动)
我有一个StackPanel嵌套在里面ScrollViewer,我已经有滚动工作.我相信我在某个地方看到了答案,但我似乎无法再找到它了.
这必须仅使用代码完成.
我想我在这里错过了一些简单的东西......我如何在Grid内部ScrollViewer进行水平滚动?我启用了HorizontalScrollMode,内容肯定足够长,以至于它在屏幕上运行,但它不会滚动.这是有问题的代码(这ScrollViewer是LayoutRoot行的唯一内容Grid):
<ScrollViewer Grid.Row="1" VerticalScrollMode="Disabled"
VerticalScrollBarVisibility="Hidden"
HorizontalScrollMode="Enabled">
<Grid Margin="120,0,0,100">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="240"/>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="240"/>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="240"/>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="240"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="Download" HorizontalAlignment="Center" Margin="0,0,0,10"/>
<local:BandwidthMeter Grid.Row="1" x:Name="PolicyDown" Grid.Column="0"/>
<TextBlock Grid.Column="2" Text="Upload" HorizontalAlignment="Center"/>
<local:BandwidthMeter Grid.Row="1" x:Name="PolicyUp" Grid.Column="2"/>
<TextBlock Grid.Column="4" Text="Download" HorizontalAlignment="Center"/>
<local:BandwidthMeter x:Name="ActualDown" Grid.Row="1" Grid.Column="4"/>
<TextBlock Grid.Column="6" Text="Upload" HorizontalAlignment="Center"/>
<local:BandwidthMeter x:Name="ActualUp" Grid.Row="1" Grid.Column="6" />
<TextBlock Grid.Column="7" Text="Campus-wide bandwidth usage" …Run Code Online (Sandbox Code Playgroud) 我有这样的xaml代码
<Grid>
<... some grid row and column definitions .../>
<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto">
<TextBlock "some attribute" />
</ScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我不知道如何配合Textblock与Scrollviewer在C#.我想Textblock用Scrollviewer.如果您有其他想法,请告诉我.
非常感谢您的帮助.:d
是否有一个事件在孩子滚动进入视图时被提出并指示孩子被实现了什么?
当然有ScrollChanged事件,但它没有向我提供任何关于滚动到视图中的元素的指示.
提前致谢.
编辑:
我曾尝试连接到ScrollViewer的RequestBringIntoView事件,但它永远不会到达.或者我也在包含这些项目的StackPanel上尝试了相同的操作:
XAML :
<ScrollViewer RequestBringIntoView="ScrollViewer_RequestBringIntoView" >
<StackPanel RequestBringIntoView="StackPanel_RequestBringIntoView">
<Button Content="1" Height="20"/>
<Button Content="2" Height="20"/>
<Button Content="3" Height="20"/>
<Button Content="4" Height="20"/>
<Button Content="5" Height="20"/>
<Button Content="6" Height="20"/>
<Button Content="7" Height="20"/>
<Button Content="8" Height="20"/>
<Button Content="9" Height="20"/>
<Button Content="10" Height="20"/>
<Button Content="11" Height="20"/>
<Button Content="12" Height="20"/>
<Button Content="13" Height="20"/>
<Button Content="14" Height="20"/>
<Button Content="15" Height="20"/>
<Button Content="16" Height="20"/>
<Button Content="17" Height="20"/>
<Button Content="18" Height="20"/>
<Button Content="19" Height="20"/>
<Button Content="20" Height="20"/>
<Button Content="21" Height="20"/>
<Button Content="22" Height="20"/>
<Button Content="23" …Run Code Online (Sandbox Code Playgroud) 我有一个WPF Scrollviewer,其内容为Items Control,显示图像列表.然后,我有另一个带有项目控件的滚动查看器,用于保存所选图像.我需要做的是当一些人点击所选图像时,所有图像中的项目应滚动进入查看.
我搜索过,但找不到任何如何实现这一目标的例子.
有人有任何例子或建议吗?
scrollviewer ×10
wpf ×5
c# ×4
windows-8 ×2
xaml ×2
.net ×1
clr ×1
grid ×1
itemscontrol ×1
listview ×1
silverlight ×1
textblock ×1
vb.net ×1
zooming ×1