我正在为Silverlight 3应用程序中的某些文档进行一种"打印预览"控件.我在ScrollViewer中有一个Canvas(用于显示文档),我有放大/缩小按钮,用于控制Canvas.RenderTransform属性的ScaleTransform的X和Y Scale属性.我希望ScrollViewer的滚动条在我"放大"时显示,以便画布在ScrollViewer区域中不再可见,但似乎它们只显示取决于画布本身的宽度/高度,无论如何是否放大.
有人可以帮忙吗?
silverlight xaml scrollviewer silverlight-3.0 scaletransform
我有一个带有ScrollViewer的GridView,它常常与GridView的内容一起水平滚动.我使用Chris Cavanagh的圆角解决方案更改了它,其中包括在GridViewHeaderRowPresenter周围放置网格并将边框添加到同一级别,然后将其用作不透明蒙版(有关详细信息,请参阅此问题).
这似乎禁用了标题的水平滚动.如果我将浏览器窗口的大小调整为较小的强制内容的滚动条,则标题将保持不变.我想,添加的xaml会以某种方式禁用滚动标题.
这就是代码目前的样子.请注意,这是一个以ScrollViewer元素为目标的样式定义,而不是直接在页面上的XAML标记中.
<ScrollViewer Focusable="false"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Hidden"
DockPanel.Dock="Top"
Style="{DynamicResource HEK_ScrollViewer}">
<Grid>
<Border Name="Mask"
CornerRadius="20,20,0,0"
Background="White" />
<GridViewHeaderRowPresenter Margin="1,0,1,1"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Columns="{Binding TemplatedParent.View.Columns, RelativeSource={RelativeSource TemplatedParent}}"
AllowsColumnReorder="{Binding TemplatedParent.View.AllowsColumnReorder, RelativeSource={RelativeSource TemplatedParent}}"
ColumnHeaderContainerStyle="{DynamicResource HEK-GridViewColumnHeaderStyle}"
ColumnHeaderContextMenu="{Binding TemplatedParent.View.ColumnHeaderContextMenu, RelativeSource={RelativeSource TemplatedParent}}"
ColumnHeaderStringFormat="{Binding TemplatedParent.View.ColumnHeaderStringFormat, RelativeSource={RelativeSource TemplatedParent}}"
ColumnHeaderTemplate="{Binding TemplatedParent.View.ColumnHeaderTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ColumnHeaderTemplateSelector="{Binding TemplatedParent.View.ColumnHeaderTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}"
ColumnHeaderToolTip="{Binding TemplatedParent.View.ColumnHeaderToolTip, RelativeSource={RelativeSource TemplatedParent}}">
<GridViewHeaderRowPresenter.OpacityMask>
<VisualBrush Visual="{Binding ElementName=Mask}" />
</GridViewHeaderRowPresenter.OpacityMask>
</GridViewHeaderRowPresenter>
</Grid>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud) 我想在应用程序窗口未聚焦时滚动ScrollViewer控件.我在Windows窗体中找到了一些解决方案,但在WPF中找不到,因为我需要的一些东西不可用.
也许这里有人可以帮我解决问题?
提前致谢.
编辑:
我想在鼠标悬停在ScrollViewer上时使用鼠标滚轮滚动ScrollViewer控件,同时在应用程序窗口未聚焦时也是如此.
我有一个简单的wpf窗口,它有一个Scrollviewer,里面是一个Web浏览器.
<Window x:Class="WpfApplication9.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Background="Gainsboro">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="300"/>
</Grid.ColumnDefinitions>
<ScrollViewer Width="300" Grid.Column="1" Height="200" HorizontalScrollBarVisibility="Auto">
<WebBrowser Width="400" Margin="2" Source="C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg" />
</ScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)
由于我给浏览器一个宽度超过滚动查看器宽度的宽度,我希望滚动查看器显示水平滚动条并在滚动查看器中显示Web浏览器.
但是当我向右水平滚动时,Web浏览器会移出滚动viwer.
难道我做错了什么?或者有任何解决方法吗?
任何帮助都非常感谢.谢谢.
为什么在下一个XAML中单击禁用按钮会导致ScrollViewer从TextBox中窃取焦点?这样对吗?解决方法是什么?
<Window
x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
FocusManager.FocusedElement="{Binding ElementName=TextBox}">
<ScrollViewer>
<StackPanel>
<TextBox x:Name="TextBox"/>
<Button IsEnabled="False" Content="Disabled Button"/>
</StackPanel>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
在ScrollViewer上设置IsFocusable ="False"有帮助.但这是正确的解决方法吗?
我有这个:
<Window x:Class="ScrollTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="450"
Width="525">
<ScrollViewer ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<GroupBox Grid.Row="0"
Header="Stuff"
Height="200">
<TextBlock Text="Lots of controls go here"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</GroupBox>
<TabControl Grid.Row="1">
<TabItem Header="Main Tab">
<TextBox MinHeight="100"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalContentAlignment="Left"
VerticalContentAlignment="Top"
ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible"
AcceptsReturn="True" />
</TabItem>
</TabControl>
</Grid>
</ScrollViewer>
</Window>
Run Code Online (Sandbox Code Playgroud)
当我添加太多的行成TextBox,而不是ScrollViewer的TextBox使用,箱体延伸和最外层ScrollViewer使用.我可以在不修复TextBox或高度的情况下防止这种情况TabControl吗?
更新:
如果我删除MinHeight的TextBox,并设置MaxLines为5,这是我得到:

如果我添加了第6行,则使用TextBoxs 的滚动条ScrollViewer …
我需要显示位于特定路径中的所有文件.我创建了一个用户控件,其中包含文件详细信息的文本块(名称,大小,扩展名等),此控件将是统一网格的子控件.
问题是,如果我的uniformgrid是5x5,并且我有超过25个文件,则不会显示第26个元素.
我想知道,有没有办法滚动统一网格的内容?
我知道我可以使用列表框和绑定(我还在阅读它),但是我需要以编程方式添加控件,因为控件有一个事件,并且当用户控件的新实例我订阅它时已创建,然后添加到子数组.
我已经看过这篇文章了,我已经将uniforgrid放在了ItemsControl中,但它根本不起作用,这是我的xaml:
<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" >
<ItemsControl x:Name="gridArchivos">
<ItemsControl.ItemsPanel >
<ItemsPanelTemplate >
<UniformGrid Columns="5" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
根据帖子,只需要指定cols或rows,而不是两者.所以,只有5个小马.我不希望hrizontal滚动,只需垂直.
谢谢你的时间.
我正在试图弄清楚如何让我ContentControl正确地水平滚动(此刻垂直方向).通过正确我的意思是我希望看到内容伸展(无限扩展),同时具有滚动条出现的最小尺寸,以使内容不会溢出该ContentControl区域,所以这里是一个快速介绍:
主窗口以这种方式构造:
ContentControl的模板:
实际问题是ContentControl在您调整窗口大小时会增长,但不会随着窗口大小调整而缩小.
主视图XAML(为清晰起见截断):
<ScrollViewer Grid.Row="5" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<ContentControl Grid.Row="5" Background="Transparent" Focusable="False" Margin="0,5,0,0"
Content="{Binding CurrentSection}" ContentTemplateSelector="{StaticResource templateSelector}/>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
Tempate XAML(为清晰起见截断):
<Grid>
...
<ItemsControl Grid.Row="4" ItemsSource="{Binding Data.QualifyingDistributionsDividends}" x:Name="QualifyingItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid x:Name="DTLayoutGrid">
...
<Grid Grid.Row="1" x:Name="DataLayout" Width="{Binding ElementName=DTLayoutGrid, Path=ActualWidth}" HorizontalAlignment="Stretch">
...
<DataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="8" HorizontalScrollBarVisibility="Disabled"
ItemsSource="{Binding Payments}" Style="{StaticResource DataGridStyle}" CellStyle="{StaticResource DataGridNormalCellStyle}">
</DataGrid>
</Grid>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
Run Code Online (Sandbox Code Playgroud)
那会发生什么?Datagrid假设整个宽度DataTemplate(以及其设置为DataTemplates大小的底层控件,然后*列假定所有空的空间.当您尝试调整保存此代码的整个窗口时,它将正确生长,扩展*列但似乎缩小没有"注册",它保持你扩展它的大小,在其上应用滚动条并忘记它.
我已经试过到目前为止是设置宽度ItemsControl,其潜在的父母喜欢网等,还设置大小 …
我正在构建一个照片应用程序,使用a FlipView和a listView作为分页.当我点击它中的缩略图时,ListView它显示了我的相同图片FlipView.当我滑入时FlipView,所选的任何照片都会选择相同的照片ListView.这是通过添加到它们两个来完成的:
致ListView:
SelectedIndex="{Binding Path=SelectedIndex, ElementName=flipView1, Mode=TwoWay}
Run Code Online (Sandbox Code Playgroud)
对于FlipView:
SelectedIndex="{Binding Path=SelectedIndex, ElementName=listView1, Mode=TwoWay}
Run Code Online (Sandbox Code Playgroud)
对于ListView SelectionChanged我添加的事件:
if (e.AddedItems.Count > 0)
listView1.ScrollIntoView(e.AddedItems.First(), ScrollIntoViewAlignment.Leading);
Run Code Online (Sandbox Code Playgroud)
我唯一的问题是,当我滑动时FlipView,所选的图片被选中,ListView但是ScrollViewer没有滚动到它.我尝试WinRTXamlToolkit用来改变以下位置ScrollViewer:
private void pageRoot_Loaded()
{
// count number of all items
int itemCount = this.listView1.Items.Count;
if (itemCount == 0)
return;
if (listView1.SelectedIndex >= itemCount)
listView1.SelectedIndex = itemCount - 1;
// calculate x-posision of …Run Code Online (Sandbox Code Playgroud) 我使用ScrollViewer作为Silverlight应用程序的一部分.它有一个水平方向,我希望它看起来只有滚动按钮出现,而不是滚动条本身.像这样粗糙的ASCII渲染:
------------------------------------------------------
| | | |
| < | Content Here | > |
| | | |
------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用模板功能,但我看到的所有样本只会改变所有元素的外观,而不是它们的原始定位,或者它们是否出现.是否可以这样做,有人可以提供模板外观的大纲吗?
scrollviewer ×10
wpf ×7
c# ×3
xaml ×3
focus ×2
silverlight ×2
browser ×1
gridview ×1
itemscontrol ×1
listview ×1
parent-child ×1
scroll ×1
uniformgrid ×1
width ×1
winapi ×1
windows-8.1 ×1