相关疑难解决方法(0)

WPF DataGrid:CanContentScroll属性导致奇怪的行为

我有一个解决方案,我根据用户标准生成一个DataGrid(或多个实例)..每个网格通过ObservableCollection继续接收数据

我遇到的问题是滚动表现得很奇怪.这是不稳定的,滚动条会在滚动时调整自己的大小.

比我发现.. CanContentScroll属性!它完全修复了奇怪的滚动行为,带给我暂时的幸福和快乐.

然而,它会导致2个不幸的副作用.

  1. 每当我重新创建网格实例并将它们绑定到我的可观察集合时,它会冻结整个窗口5秒钟.当我的网格增长到一个大尺寸时,这种延迟可以持续30秒.

  2. 当我调用TradeGrid.ScrollIntoView(TradeGrid.Items(TradeGrid.Items.Count - 1))滚动到底部时,它会跳到底部而不是回到顶部.

还有另一种方法可以实现平滑滚动吗?

wpf binding wpfdatagrid

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

WPF DataGrid 过滤项目,跳跃的滚动条

我有一个DataGridItemSource填充控制。我还使用过滤器/查询机制来过滤控件的内容。

当未过滤数据网格时,滚动工作正常。但是当我过滤(= 将项目的可见性设置为 false,这会折叠数据网格中的项目)时,滚动变得非常“跳跃”。当我向下滚动时,滚动条变得越来越小,滚动变得很烦人。

我读了一些关于虚拟化的内容,以及一些关于设置DataGrid.ScrollViewer 的内容,但我在 XAML 中没有这些属性可用。

为什么感觉微不足道的东西过于复杂......无论如何,我如何将我的数据网格配置为:

  • 通过数据绑定显示项目列表
  • 能够过滤列表(通过折叠项目)
  • 并且显然有一个滚动条,允许用户滚动而不会感到沮丧:)

我的 XAML:

<DataGrid Grid.Row="2"
          ItemsSource="{Binding ErrorsThatStoppedMachine}"
          AutoGenerateColumns="False"
          SelectedItem="{Binding SelectedError}"
          IsReadOnly="True"
          SelectionMode="Single">

    <DataGrid.Columns>
        <DataGridTextColumn Header="Timestamp" Width="220" Binding="{Binding Path=Timestamp}" />
        <DataGridTextColumn Header="ErrorCode" Width="90" Binding="{Binding Path=ErrorCode}" />
        <DataGridTextColumn Header="Unit" Width="70" Binding="{Binding Path=Unit}" />
        <DataGridTextColumn Header="State" Width="100" Binding="{Binding Path=MachineState}" />
        <DataGridTextColumn Header="Message" Width="*" Binding="{Binding Path=Message}" />
    </DataGrid.Columns>

    <DataGrid.RowStyle>
        <Style TargetType="{x:Type DataGridRow}"
               d:DataContext="{d:DesignInstance IsDesignTimeCreatable=True, Type=viewModels:ErrorViewModel}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsVisible}" Value="false">
                    <Setter Property="Visibility" Value="Collapsed" />
                </DataTrigger> …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datagrid

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

防止DataGrid滚动从捕捉到行

我有一个DataGrid,其中每行包含ItemsControl.因此,网格的行可以非常高.如果一行高于网格的高度,我无法滚动查看行的其余部分,因为DataGrid会自动滚动到下一行.也就是说,如果我正在查看第1行的上半部分并单击垂直滚动条的向下箭头,它会跳到第2行的顶部.它不会让我看到第1行的下半部分.我如何制作DataGrid是否可以平滑地滚动行而不是逐行步进?

wpf wpfdatagrid

5
推荐指数
2
解决办法
2372
查看次数

标签 统计

wpf ×3

wpfdatagrid ×2

binding ×1

c# ×1

datagrid ×1

xaml ×1