2

我开始为我的 WPF Caliburn.Micro 应用程序使用 ComponentOne 的 C1FlexGrid。我想知道如何将列设置为最大内容宽度。我尝试将其设为自动,但所有列的宽度仍然相同。

我这样应用 AutoSizeColumns:

      protected override void OnViewAttached(object view, object context)
  {
      var View = (FirstDataEntryView)view;
      View.EnrollmentFiles.AutoSizeColumns(0, 4, 5);
  }

但这没有帮助......

谢谢

4

1 回答 1

1

由于虚拟化,使用 GridLength.Auto 通常不适用于这些列宽。FlexGrid 有几种方法可以自动调整列的大小,但列必须是可见的,否则它们将不会被计算并且将保持静态宽度。 是一个非常不值得生产的示例,说明如何执行此操作。FWIW 这就是我从不喜欢 ComponentOne 控件的原因——感觉就像它们被困在 WinForms 模式中。

编辑:为特定于 CM 的用法添加一些代码。

protected override void OnViewAttached(object view, object context) {
    View = (YourViewType)view;
    View.flexGrid.AutoSizeColumns(0,4,5);
}

至于从视图模型访问视图是否与 MVVM 理论“兼容”——从技术上讲不是,但有时您被迫使用无法通过 XAML 自动配置的控件,并且您不能使用由于某种原因,View 的代码隐藏。

于 2012-08-08T18:00:06.387 回答