我想把ScrollViewer放在它滚动的内容重叠/位于其上面的方式.我会设置ScrollViewer的不透明度,以便内容在下面可见.
据我所知,默认的ScrollViewer,这似乎不可能开箱即用,因为内容嵌套在ScrollViewer中.
关于如何使这项工作的任何想法?
编辑:我知道ScrollViewer是一个装饰器,内容不知道ScrollViewer.这种分离很好,我不希望内容知道ScrollViewer.我尝试做的是纯粹的视觉(布局)事物.只需在内容之上显示ScrollViewer.ScrollViewer的行为应保持不变.
我想使用ItemsControl显示重要的项目列表.
我正在使用ItemsControl的原因是DataTemplate在我正在处理的应用程序中要复杂得多:提供的示例代码仅反映了我的调整问题.
我想要 :
它的大小自动扩展到其父容器(Grid)
<Grid>
<ItemsControl x:Name="My" ItemsSource="{Binding Path=Names}">
<ItemsControl.Template>
<ControlTemplate>
<StackPanel>
<StackPanel>
<TextBlock Text="this is a title" FontSize="15" />
<TextBlock Text="This is a description" />
</StackPanel>
<ScrollViewer CanContentScroll="True" Height="400px">
<VirtualizingStackPanel IsItemsHost="True" />
</ScrollViewer>
</StackPanel>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
Run Code Online (Sandbox Code Playgroud)
背后的代码是:
public partial class Page1: Page
{
public List<string> Names { get; set; }
public Page1()
{
InitializeComponent();
Names = new List<string>();
for(int i = 0; i < 10000; i++)
Names.Add("Name : …Run Code Online (Sandbox Code Playgroud) 我希望收到有关ScrollViewer垂直滚动条的VerticalOffset更改的通知.在WPF中有一个ScrollViewer.ScrollChanged事件,但在Silverlight 3中缺少这个事件.有没有人知道解决方法?
想象一下你打开WPF的情况Popup(例如通过ButtonClick).您可以ListBox直接Popup使用某些项目,因此您必须能够滚动.想象一下,这是你的Custom Control,它位于ScrollViewer.
现在如果你用鼠标移动到Popup表面并滚动,会发生什么?你可以向上和向下滚动但是Popup打开了!这就是问题所在.
问题是,如何从Control内部检测到VisualTree中的其他一些未知的Parent Control已经开始滚动?并连续设定IsDropDownOpen = false?
我在我的WPF4窗口中使用ScrollViewer.PanningMode添加了一个ScrollViewer.当我在多点触控屏幕上拖动scrollviewer时,没关系.但是......当我到达顶部滚动或底部滚动时,窗口会随着滚动而移动.我们怎能避免这种情况?
我试图以与在PDF文档中平移相同的方式平移ScrollViewer的内容(滚动到放大/缩小,单击+拖动以平移)ScrollViewer具有为触摸事件内置的此功能(PanningMode) ,但这似乎并没有转化为Click + Drag事件.有没有办法告诉它/模仿这个功能?
我的页面左侧有一个垂直的StackPanel,其中包含以下元素:
我试图使用ScrollViewer元素使第二个StackPanel可滚动但没有成功.如果我将ScrollViewer Height定义为某个值,它可以工作,但我不想,因为我希望它填充所有可用的垂直空间.
我想在代码读取StackPanel计算高度时应用ScrollViewer Height,但这似乎不是正确的方法.我还试图将Height和ActualHeight绑定到StackPanel Height属性但没有结果.
<ScrollViewer
Grid.Row="1"
VerticalAlignment="Top"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollMode="Enabled"
ScrollViewer.HorizontalScrollMode="Disabled"
ScrollViewer.ZoomMode="Disabled">
<StackPanel x:Name="sptest" Orientation="Vertical">
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test1</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test2</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test3</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test4</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test5</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test6</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test7</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test8</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test9</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test10</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test11</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test12</TextBlock>
</StackPanel>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
除了我还有一个GridView填充水平可用空间,它自动有滚动条.我没有定义它,必要时它会出现.很奇怪,StackPanel的行为并不像我想要的那样.我究竟做错了什么?
编辑
我发现了这个问题.它是关于WPF而不是WinRT,但可能是同样的问题.它说:
你不能没有固定StackPanel的高度.它旨在无限制地向一个方向发展.我建议使用不同的面板
我将StackPanel更改为Grid(我不想因为行定义,因为我只需要一列),但ScrollViewer也不起作用.
我正在编写一个WPF应用程序,它将在完整的Windows 8触摸屏平板电脑(不是RT)上运行.
但是,触摸滚动似乎不起作用.所以我想知道这是我做错了什么,或者它是否可能?
所以,我有一个带滚动查看器的WPF窗口.在该滚动查看器中,我有一个StackPanel,其中包含大量文本块.见下文:
<ScrollViewer>
<StackPanel>
<TextBlock Text="Row 1" />
<TextBlock Text="Row 2" />
<TextBlock Text="Row 3" />
<TextBlock Text="Row 4" />
<TextBlock Text="Row 5" />
<TextBlock Text="Row 6" />
....
<TextBlock Text="Row 50" />
</StackPanel>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
现在使用触摸屏我尝试滚动内容但它不移动.我只能使用侧面scollbar滚动内容,这不是我想要的方式.是否可以使用WPF进行触摸滚动?我也想对网格做同样的事情.
提前致谢.
我正在使用Visual Studio/Blend 2012.
我还没有找到Blend/WPF的这个问题的信息.仅适用于Eclipse,这无济于事.
我目前正在设计一个WPF 4应用程序对话框.它应该是一个ScrollViewer具有不同元素的StackPanel:
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Height="470" VerticalAlignment="Top">
<StackPanel Height="1893" Width="899">
<!-- Elements here ... -->
</StackPanel>
<ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都按预期工作.滚动条可见.我的问题是我无法在Blend或Visual Studio 2012中向下滚动设计时间.运行项目工作正常,用户可以向下滚动到其他对象.
但在设计时,似乎没有机会向下滚动以准确定位(现在隐藏)控件.
一个解决方案是扩展控件以显示完整的内容.但这不是最好的解决方案.有没有人有设计时适当滚动的线索?
非常感谢你.
我是WPF的新手.我想做这个简单的布局,我就是做不到.让我为你画画:

我们的想法是在没有足够空间的情况下将蓝色文本保持在绿色元素下方但是绿色元素应该放在可滚动容器内(可以看到垂直滚动条).
我尝试过StackPanel和Grid,但都失败了.StackPanel根本不收缩行.如果顶部RowDefinition的高度设置为"auto"(内部的ScrollViewer不显示其滚动条),Grid会执行相同的操作.如果它设置为星形,则蓝色文本向下移动到至少一半的空间(取决于底行的高度设置).底行的高度可以是"自动"或星形,蓝色文本的VerticalAlignment设置为Top但是行的高度必须保持至少与文本一样大.当然整个区域(黑匣子)不能被其内容拉伸 - 它取决于窗口的大小.
如果您知道如何使其正常工作,请帮助.如果你愿意,可以在XAML中发布.谢谢!
scrollviewer ×10
wpf ×8
scrollbar ×2
xaml ×2
blend ×1
c# ×1
grid ×1
itemscontrol ×1
layout ×1
panning ×1
scroll ×1
silverlight ×1
styling ×1
touchscreen ×1
windows-8 ×1
winrt-xaml ×1