标签: scrollviewer

XAML:当子对象的ScaleTransform变大时,让ScrollViewer显示滚动条

我正在为Silverlight 3应用程序中的某些文档进行一种"打印预览"控件.我在ScrollViewer中有一个Canvas(用于显示文档),我有放大/缩小按钮,用于控制Canvas.RenderTransform属性的ScaleTransform的X和Y Scale属性.我希望ScrollViewer的滚动条在我"放大"时显示,以便画布在ScrollViewer区域中不再可见,但似乎它们只显示取决于画布本身的宽度/高度,无论如何是否放大.

有人可以帮忙吗?

silverlight xaml scrollviewer silverlight-3.0 scaletransform

6
推荐指数
1
解决办法
7890
查看次数

WPF GridView标头不会水平滚动

我有一个带有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)

wpf gridview rounded-corners scrollviewer

6
推荐指数
1
解决办法
1377
查看次数

WPF - 没有焦点的滚动

我想在应用程序窗口未聚焦时滚动ScrollViewer控件.我在Windows窗体中找到了一些解决方案,但在WPF中找不到,因为我需要的一些东西不可用.

也许这里有人可以帮我解决问题?

提前致谢.

编辑:

我想在鼠标悬停在ScrollViewer上时使用鼠标滚轮滚动ScrollViewer控件,同时在应用程序窗口未聚焦时也是如此.

c# wpf winapi focus scrollviewer

6
推荐指数
1
解决办法
1354
查看次数

滚动查看器中的Web浏览器

我有一个简单的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.

难道我做错了什么?或者有任何解决方法吗?

任何帮助都非常感谢.谢谢.

browser wpf scrollviewer

6
推荐指数
1
解决办法
3562
查看次数

ScrollViewer窃取焦点

为什么在下一个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"有帮助.但这是正确的解决方法吗?

wpf focus scrollviewer

6
推荐指数
1
解决办法
3203
查看次数

父控件ScrollViewer滚动而不是子控件ScrollViewer

我有这个:

<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,而不是ScrollViewerTextBox使用,箱体延伸和最外层ScrollViewer使用.我可以在不修复TextBox或高度的情况下防止这种情况TabControl吗?

更新:

如果我删除MinHeightTextBox,并设置MaxLines为5,这是我得到:

MinHeight已删除,MaxLines设置为5

如果我添加了第6行,则使用TextBoxs 的滚动条ScrollViewer …

c# wpf scroll parent-child scrollviewer

6
推荐指数
1
解决办法
2241
查看次数

WPF滚动Uniformgrid

我需要显示位于特定路径中的所有文件.我创建了一个用户控件,其中包含文件详细信息的文本块(名称,大小,扩展名等),此控件将是统一网格的子控件.

问题是,如果我的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滚动,只需垂直.

谢谢你的时间.

wpf xaml itemscontrol scrollviewer uniformgrid

6
推荐指数
1
解决办法
4853
查看次数

WPF ContentControl宽度增长但在ScrollViewer中包装时不会缩小

我正在试图弄清楚如何让我ContentControl正确地水平滚动(此刻垂直方向).通过正确我的意思是我希望看到内容伸展(无限扩展),同时具有滚动条出现的最小尺寸,以使内容不会溢出该ContentControl区域,所以这里是一个快速介绍:

主窗口以这种方式构造:

  • 网格(.3*和.7*的2列)
    • 边界
      • 网格(7行,一个设置为*,其中ContentControl是)
        • ScrollViewer与StackPanel(纯粹用于测试)包装具有自动宽度的ContentControl

ContentControl的模板:

  • 网格(宽度设置为UserControl的ActualWidth,6行,其中一行设置为自动,其中ItemsControl去
    • ItemsControl描述一个DataTemplate类型的ItemTemplate,其中包含一个Grid,其中我有一个DataGrid

实际问题是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,其潜在的父母喜欢网等,还设置大小 …

wpf xaml scrollviewer width contentcontrol

6
推荐指数
1
解决办法
5352
查看次数

计算水平偏移以将ListView滚动到SelectedItem的中心

我正在构建一个照片应用程序,使用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)

c# listview scrollviewer windows-store-apps windows-8.1

6
推荐指数
1
解决办法
1810
查看次数

只有按钮的Silverlight Scrollviewer

我使用ScrollViewer作为Silverlight应用程序的一部分.它有一个水平方向,我希望它看起来只有滚动按钮​​出现,而不是滚动条本身.像这样粗糙的ASCII渲染:

------------------------------------------------------
|   |                                            |   |
| < |                Content Here                | > |
|   |                                            |   |
------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用模板功能,但我看到的所有样本只会改变所有元素的外观,而不是它们的原始定位,或者它们是否出现.是否可以这样做,有人可以提供模板外观的大纲吗?

silverlight scrollviewer

5
推荐指数
1
解决办法
7860
查看次数