标签: scrollviewer

在WrapPanel上垂直列出项目并利用多个列

我需要垂直列出项目(全部大小相同)(使用ScrollViewer).如果容器足够大以显示x列,我希望项目通过x列传播

我第一次尝试:

<ScrollViewer>
    <toolkit:WrapPanel Orientation="Horizontal" ItemHeight="30" ItemWidth="100">
        <Button Content="1" />
        <Button Content="2" />
        <Button Content="3" />
        <Button Content="4" />
        <Button Content="5" />
    </toolkit:WrapPanel>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

结果 - WrapPanel的工作方式与我想的一样,但我的项目是从"从左到右"排序的(不是垂直的

然后我尝试将WrapPanel的Orientation设置为" Vertical ":

结果 - 我的项目是垂直排序但未在多列上展开.

以下是我想要呈现的项目:

我真的想避免编写监视控件大小的代码来创建/删除列,具体取决于它的大小.

silverlight wpf xaml wrappanel scrollviewer

16
推荐指数
1
解决办法
9863
查看次数

如何在WPF中将高度设置为自动时使scrollviewer工作?

我已经了解到,如果将网格行的高度ScrollViewer设置为Auto,则垂直滚动条将不会生效,因为它的实际大小ScrollViewer可能大于视线中的高度.因此,为了使滚动条工作,我应该将高度设置为固定数字或星形高度

但是,我现在有了这个要求,我有两个不同的视图驻留在两个网格行中,并且我有一个切换按钮可以在这两个视图之间切换:当显示一个视图时,另一个视图隐藏/消失.所以我定义了两行,两个高度都设置为Auto.我绑定的每一行中的布尔属性视图的可视性从我的视图模型(一个是从转换TrueVisible从和其他TrueCollapsed.我们的想法是,当一个视图的能见度Collapsed,网格行的高度/视图将被改变自动为0.

视图显示/隐藏工作正常.但是,在一个视图中我有一个ScrollViewer,正如我所提到的,当行高设置为时,它不起作用Auto.任何人都能告诉我如何在仍然ScrollViewer自动工作的同时满足这样的要求吗?我想我可以在代码隐藏中设置高度.但由于我使用的是MVVM,因此需要额外的通信/通知.有没有更简单的方法呢?

wpf xaml autosize scrollviewer uwp-xaml

16
推荐指数
2
解决办法
3万
查看次数

WPF从TreeView中删除ScrollViewer

我想知道是否可以轻松关闭TreeView的ScrollViewer.

我有一个带网格的UserControl.其中一个Cell在Stackpanel中有一些TreeView.Control的高度根据TreeView的高度自动调整,因此不需要滚动条.

问题是:我在ListBox中有一堆具有自己的ScrollViewer,但是当我使用MouseWheel时,当你在TreeView上时滚动停止.

这是因为TreeView有自己的ScrollViewer来窃取MouseWheel.我知道这可能是通过覆盖控件模板来实现的,但我希望有一种更简单的方法.

c# wpf treeview scrollviewer

15
推荐指数
1
解决办法
6009
查看次数

WPF - 滚动查看器中的内容?

我有一个包含文本块项目堆栈面板的scrollviewer(实际上,这些可能是tabitems,我在scrollviewer中使用stackpanel来覆盖tabcontrol模板中的默认tabpanel).我希望能够做的是,当更改选定的选项卡时,将新选择的选项卡移动到滚动查看器可见区域的中心.理想情况下,这适用于所有选项卡,甚至是远端的选项卡,但我愿意能够告诉滚动查看器滚动使得特定元素尽可能接近居中.

在WPF中有没有明显的方法来实现这一目标?我现在能想到的所有解决方案都涉及很多关于自定义控件的工作.

在此输入图像描述

c# wpf scrollviewer

15
推荐指数
2
解决办法
1万
查看次数

触发ScrollViewer的滚动条可见性(WPF)

是否可以创建基于ScrollViewer滚动条可见性触发的触发器?我有一个ScrollViewer与它VerticalScrollBarVisibility设置为Auto,我想改变一些的ScrollViewer的属性只有当在滚动条实际上是可见的.

像这样的东西:

<ScrollViewer VerticalScrollBarVisibility="Auto">
    <ScrollViewer.Triggers>
        <Trigger Property="IsScrollBarVisible" Value="True">
            <!-- Setters -->
        </Trigger>
    </ScrollViewer.Triggers>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

wpf xaml triggers scrollviewer

14
推荐指数
1
解决办法
1万
查看次数

Wpf ScrollViewer滚动金额

是否可以更改WPF ScrollViewer滚动的数量?我只是想知道是否可以更改滚动查看器,以便在使用鼠标滚轮或滚动查看器箭头时,可以更改增量滚动的数量.

wpf scrollviewer

14
推荐指数
2
解决办法
1万
查看次数

从C#访问ListBox的ScrollViewer

我想的属性改变ScrollViewerListBox从C#.

我在Stackoverflow上找到了这个问题.我接受了接受的答案的建议,并将其ScrollViewer作为子类的属性公开.但是,这似乎不适用于下面显示的示例.该问题中的一些评论也表明这种技术不起作用.

XAML:

<Window x:Class="StackoverflowListBoxScrollViewer.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">

</Window>
Run Code Online (Sandbox Code Playgroud)

C#:

using System;
using System.Windows;
using System.Windows.Controls;

namespace StackoverflowListBoxScrollViewer
{
    public class MyListBox : ListBox
    {
        public ScrollViewer ScrollViewer
        { get { return (ScrollViewer)GetTemplateChild("ScrollViewer"); } }
    }

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var myListBox = new MyListBox();

            Content = myListBox;

            myListBox.Items.Add(new Button() { Content = "abc" });
            myListBox.Items.Add(new Button() { Content = "abc" });
            myListBox.Items.Add(new …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml listbox scrollviewer

14
推荐指数
3
解决办法
2万
查看次数

WPF - Animate ListBox.ScrollViewer.Horizo​​ntalOffset?

我有一个Visuals 的集合ListBox.我需要找到XPosition里面的一个元素,然后动画HorizontalOffset中的ListBoxScrollViewer.基本上我想创建一个动画ScrollIntoView方法.

这给了我一些问题.首先,我如何获得对ListBoxs scrollviewer 的引用?其次,我怎样才能获得相对XPositionHozintalOfffset任意元素ListBox

我并没有对ListBox自身的任何输入做出反应,因此我无法使用Mouse相关属性.

wpf animation listbox scrollviewer horizontaloffset

13
推荐指数
1
解决办法
2万
查看次数

如何使用鼠标启用水平滚动?

我无法确定如何使用鼠标滚轮水平滚动.垂直滚动可以自动运行,但我需要水平滚动我的内容.我的代码看起来像这样:

<ListBox x:Name="receiptList"
         Margin="5,0"
         Grid.Row="1"
         ItemTemplate="{StaticResource receiptListItemDataTemplate}"
         ItemsSource="{Binding OpenReceipts}"
         ScrollViewer.VerticalScrollBarVisibility="Disabled">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"
                        ScrollViewer.HorizontalScrollBarVisibility="Visible"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

我的项目模板如下所示:

<DataTemplate x:Key="receiptListItemDataTemplate">
    <RadioButton GroupName="Numbers"
                 Command="{Binding Path=DataContext.SelectReceiptCommand,RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type POS:PointOfSaleControl}}}"
                 CommandParameter="{Binding }"
                 Margin="2,0"
                 IsChecked="{Binding IsSelected}">
        <RadioButton.Template>
            <ControlTemplate TargetType="{x:Type RadioButton}" >
                <Grid x:Name="receiptGrid" >
                    <Grid>
                        <Border BorderThickness="2" 
                                BorderBrush="Green" 
                                Height="20" 
                                Width="20">
                            <Grid x:Name="radioButtonGrid" 
                                  Background="DarkOrange">
                                <TextBlock x:Name="receiptLabel"
                                           HorizontalAlignment="Center"
                                           VerticalAlignment="Center"
                                           Text="{Binding Path=NumberInQueue, Mode=OneWay}"
                                           FontWeight="Bold"
                                           FontSize="12"
                                           Foreground="White">
                                </TextBlock>
                            </Grid>
                        </Border>
                    </Grid>
                </Grid>

                <ControlTemplate.Triggers>
                    <Trigger Property="IsChecked" Value="True">
                        <Setter Property="Margin" 
                                TargetName="receiptGrid" 
                                Value="2,2,-1,-1"/>
                        <Setter Property="Background"
                                TargetName="radioButtonGrid" 
                                Value="Maroon"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </RadioButton.Template> …
Run Code Online (Sandbox Code Playgroud)

wpf scrollviewer horizontal-scrolling

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

DataGrid周围的WPF ScrollViewer会影响列宽

我有一个ScrollViewer的问题,我用它来滚动包含数据网格的用户控件.如果没有滚动查看器,列会根据需要填充数据网格,但在添加滚动查看器时,列会缩小到~15px.我能够简化我的布局,仍然可以重现这种行为.

将数据网格宽度绑定到另一个控件时,列具有它们的法线,但这与数据网格上的固定宽度具有相同的效果.我想我不是第一个遇到这个问题的人.如何解决此问题,让我的网格将其大小调整为可用空间并为其列提供一个比例宽度?

使用scrollviewer: 在此输入图像描述 没有: 在此输入图像描述

<Window x:Class="GridTest.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">
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Grid MinWidth="200">
    <DataGrid Margin="0" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridCheckBoxColumn Header="Column A" Width="*"/>
            <DataGridCheckBoxColumn Header="Column B" Width="*"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

wpf xaml scrollviewer wpfdatagrid

13
推荐指数
2
解决办法
1万
查看次数