2009-06-04 10 views
10

私は最近、メインコントロールの.xamlファイルのサイズを縮小するためにユーザーコントロールを利用できることを発見しました。私はWPFが新しく、自分のアプリのXAMLが非常に長く、非常に高速になり、スクロールするのが面倒であることに気付きました。アプリケーションで大きなXAMLファイルを分割する最も簡単な方法は何ですか?

ユーザーは、この問題に対処するための最良の方法を制御していますか(つまり、多数のユーザーコントロールとテンプレートを別々のコントロールライブラリに用意していますか)。

XAMLをどのように管理しますか?

ありがとうございます!

答えて

9

個別のコントロールに分割すると、個々のxamlファイルのサイズを小さくすることができます。 ファイルのサイズを縮小するもう1つの方法は、ResourceDictionariesを使用することです。スタイル、テンプレート、およびリソースを別々のResourceDictionariesに分割すると、ウィンドウとコントロールのxamlファイルのサイズが大幅に縮小されます。スタッフが分割されると、MergedDictionaries機能を使用して、必要な場所からスタイルやテンプレートにアクセスできます。特定のリソースが複数のウィンドウやコントロール全体で使用されている場合は、ResourceDictionaryをApp.xamlリソースにマージして、ソリューション内の任意の場所から使用できるようにすることもできます。

個人的には、各XAMLファイルを約300行以下にしておきたいと思っています。 Hereには、あなたのリソースを整理する方法に関するいくつかの追加情報とヒントがあります。

+0

ResourceDictionariesを使用して調べます。私は見過ごされていた何らかの形の組織がなければならないことを知っていました。あなたの助けに感謝します。 – stevosaurus

+0

追加情報のリンクが死んでいますが、[ここ](http://web.archive.org/web/20100629015119/http://groups.google.com.au/group/wpf-disciples/web/wpf-and- xamlコーディングガイドライン)、それはWayBackMachineにあります。 –

1

また、コントロール/個々のレベルでスタイルを入れないようにする代わりに、theme.xamlでスキンを直接処理するようにしてください.Xaml内のスタイル情報が膨らんでいません。

すなわち<MyControl Style="{StaticResource myControlStyle}"/>

+0

これは私が現在ユーザーコントロールで行っているところです。本当にありがとう! – stevosaurus

1

ユーザーコントロールは、外のコードを分離するために非常に良い方法ですあなただけWindow.xamlで <MyControl/>を持って直接、テーマファイルにMyControlと上そのようにスタイリングを適用することで回避することができますメインウィンドウ。 declutteringに加えて、コードをモジュール化し、そのコードセクションに限定されたインターフェイスを提供するなど、メンテナンス性を向上させ、スパゲッティコードを防ぐのに役立ちます。

それに加えて、DataTemplatesも役に立ちます。たとえば、入力が必要なフィールドの束があり、それらのフィールドのすべてにラベルがあるとします。その場合、ラベルとそのフィールドの値の2つのプロパティを持つクラスを作成できます。次に、そのクラスのラベルをTextBlockにバインドし、その値をTextBoxにバインドするDataTemplateを作成できます。すべてのラベルを整列させるには、Grid SharedSizeScopeを作成します。その後、そのクラスのObservableCollectionを作成し、ラベルと値でコレクションを塗りつぶし、ItemsControlのItemsSourceをそのクラスに設定できます。このような初期の配管工事を済ませたら、データ入力フォームをWinFormsよりも早く生成することができます。

関連する問題