2016-07-06 5 views
0

私のWPFアプリケーションにはMainWindow.xamlが1つあり、ObservableCollectionにバインドされたDataGridMainWindow.xaml.csにいくつか含まれています。私はそれで新しいDataGridを追加し続けるよう複数のDatagridを単一のビューで表示しても問題ありませんか?

例えば、

public MainWindow() 
{ 
    var dg1 = new ObservableCollection<CustomClass1>(); 
    var dg2 = new ObservableCollection<CustomClass2>(); 
    var dg3 = new ObservableCollection<CustomerClass3>(); 
} 

問題がMainWindow.xamlでは長く、長くなっています。

DataGridUserControlまたはPageにそれぞれ区切ることはできますか? または、WPFアプリケーションでいくつかのDataGridを処理するためのより良い解決法をご存知ですか?

ありがとうございます!

+0

データグリッドの仮想化について読む。あなたの場合は無効になっている可能性があります。 https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.enablerowvirtualization(v=vs.110).aspx – Mikolaytis

答えて

1

はい。可能です。 私の意見では、あなたの場合にMVVMのアプローチに従う方が良いです。あなたがそれを知っていることを願っています。 あなたがそのアプローチを知らないなら、それについて学んでください。

3つの異なるユーザーコントロールを作成することもできます。十分なユーザーコントロールを作成することもできます。ユーザーコントロールを作成し、それに対応するビューモデルを作成するだけです。 ビューモデルでは、ビューのデータグリッドのソースをプロパティにバインドして、複雑さを軽減し、コードの保守性と可読性を向上させることができます。

また、MainWindowが複雑になっていると感じることもありません。私の意見では、MainWindowにはほんの数行のコードしか書かれていません。

+0

しかし、私はユーザーコントロールが独自のビューモデルを持ってはいけないとstackoverflow答えを読んだ?どう思いますか?ここにリンクがあります:http://stackoverflow.com/a/28815689/4546953 – jkl

+1

また、正しい答えとして選択されている最初の答えをチェックしましたか?これが私の考えです。それはあなた次第です。 **これは、イエスかノーの質問ではありません。余分なビューモデルを使用することで、保守性やテスト容易性が向上するかどうかによって異なります。あなたに何も得られない場合、ビューモデルを追加することは意味がありません。オーバーヘッドがあなたの特定のユースケースに価値があるかどうかを判断する必要があります。** – ViVi

+0

ありがとう! 2番目の答えが最も多くの票を得たので、私はそれが最も正しい答えだと思った。あなたの助言をありがとう! – jkl

0

はい、DataGridを個別のUserControlに分けることができます(おそらくそうする必要があります)。コレクションをコードビハインドのままにする代わりに、Model-View-ViewModel pattern(MVVM)を実装することを検討してください。各UserControlのDataContextを関連するView Modelのインスタンスに設定してください。これにより、現在の.xaml/.xaml.csファイルが大きくなりすぎることがなくなり、コンポーネントをより再利用できるようになります。

+0

しかし、私はstackoverflow答えを読むユーザーコントロールは、独自のビューを持ってはいけませんモデル?どう思いますか?リンクは次のとおりです:http://stackoverflow.com/a/28815689/4546953 – jkl

+0

MainWindow.xamlを複数のUserControlに分解することを選択した場合でも、必ずしも複数のView Modelが必要なわけではありません。実際、UserControlの3つすべてに対するDataContextとして機能する1つのViewModelを持つことができます。私の元のコメントはMVVMの意味でビューモデルを作成することを示唆していました。 xaml.csファイルが長くなっていると言いましたが、適切なView Modelではなく、コードビハインドでView関連のロジックを実行していることを前提としていました。 –

関連する問題