【问题标题】:WPF - Need to enable scrolling in a disabled DataGridWPF - 需要在禁用的 DataGrid 中启用滚动
【发布时间】:2014-07-07 09:49:52
【问题描述】:

我的 DataGrid 列正在后面的代码中添加。

当用户完成行编辑并单击“下一步”按钮时,DataGrid 被禁用,用户将进入同一视图中的下一步..

如果用户有很多行并且需要滚动到现在禁用的 DataGrid 以查看行,就会出现问题。

我尝试将 DataGrid(当用户单击 Next 时绑定到设置 IsEnabled = false 的属性)包装在 ScrollViewer 中,这给了我想要的效果,但滚动然后位于 DataGrid 之外,我觉得这很烦人.

我已经束手无策了,真的可以帮我做这件事。

我也尝试过覆盖 ScrollViewer 的元数据,这在一定程度上可行,但从我所读的内容来看是不安全的。

有什么想法吗?

【问题讨论】:

    标签: c# wpf xaml datagrid


    【解决方案1】:

    您可以使用DataGrid.IsReadOnly 属性,而不是使用IsEnabled 属性。

    【讨论】:

      【解决方案2】:

      DataGrid 标记为只读并应用以下样式以获得禁用的外观(如果需要)。

      <DataGrid.Style>
                  <Style TargetType="DataGrid">
                      <Style.Triggers>
                          <Trigger Property ="IsReadOnly" Value="True">
                              <Setter Property= "Foreground" Value="Gray"/>
                          </Trigger>
                      </Style.Triggers>
                  </Style>
      </DataGrid.Style>
      

      【讨论】:

        【解决方案3】:

        我最终使用了 DataGrid 上的 IsReadOnly 属性并将其绑定到 IsEnabled。

        起初这是一个明显的问题,因为 IsEnabled 确实使 DataGrid 在错误状态下处于只读状态。

        所以我创建了一个帮助类来将 bool 转换为 false 以反映正确的状态(启用/禁用)。

        DataGrid 中的组件也有它们的 IsEnabled 属性数据绑定,当 DataGrid 为只读时,这为我提供了正确的禁用样式。

        感谢大家的帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-14
          • 1970-01-01
          • 2017-11-09
          • 2016-07-24
          • 2023-03-16
          • 2017-07-12
          • 1970-01-01
          相关资源
          最近更新 更多