我开始在我的WPF Caliburn.Micro应用程序中使用ComponentOne的C1FlexGrid。我想知道如何将列设置为最大内容宽度。我试图将其设为自动,但所有列的宽度仍然相同。
我像这样应用了AutoSizeColumns:
protected override void OnViewAttached(object view, object context)
{
var View = (FirstDataEntryView)view;
View.EnrollmentFiles.AutoSizeColumns(0, 4, 5);
}
但这没有帮助......
由于
答案 0 :(得分:1)
由于虚拟化,使用GridLength.Auto通常不适用于这些列宽。 FlexGrid有几种自动调整列的方法,但列必须是可见的,否则它们将不会被计算并保持静态宽度。 Here是一个非常非生产价值的示例,说明如何执行此操作。 FWIW这就是为什么我从不喜欢ComponentOne控件 - 感觉就像他们被困在WinForms模式中一样。
编辑:为特定于CM的用法添加一些代码。
protected override void OnViewAttached(object view, object context) {
View = (YourViewType)view;
View.flexGrid.AutoSizeColumns(0,4,5);
}
至于从viewmodel访问视图是否与MVVM理论“兼容” - 从技术上讲它不是,但有时你被迫使用无法通过XAML自动配置的控件,你可以'由于某种原因,使用View的代码隐藏。