【问题标题】:Synchronize separate ScrollViewer and ScrollBar with MVVM pattern使用 MVVM 模式同步单独的 ScrollViewer 和 ScrollBar
【发布时间】:2021-12-11 23:59:57
【问题描述】:

我有一个 Grid,它由一个 ScrollViewer 和一个 ScrollBar 组成,它们是分开的(即 ScrollBar 没有绑​​定到 ScrollViewer)

我希望两者同步,例如,如果 ScrollViewer 的 VerticalOffset 属性发生变化,我希望 ScrollBar 的值发生变化,反之亦然。我真的坚持两者都应该分开(因为在我的实际项目中,ScrollViewer 位于不同的视图上)

<Grid Height="200" Width="400">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="6*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    
    <ScrollViewer Grid.Column="0" Background="Gray" />
    <ScrollBar Grid.Column="1" Width="30" />
</Grid>

【问题讨论】:

    标签: c# wpf user-interface mvvm


    【解决方案1】:

    我认为你不能仅仅通过绑定几个属性来做到这一点。

    我认为这样做的方法是创建两个完全独立的 ScrollViewer 并将它们链接在一起。左侧的滚动条可见性属性设置为隐藏其滚动条,因此您看到的只是视图。右边的只是显示 ScrollBar 部分。 (这可能需要您定义自定义控件模板来实现该效果,但可以做到)。

    然后在代码隐藏中将它们链接在一起。使用 ScrollChanged 事件。例如

    https://docs.microsoft.com/en-us/answers/questions/43474/wpf-how-to-make-two-panels-share-the-same-vertical.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多