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 に答える