複雑な分離されたWPFアプリケーションでExpression Blendを使用するための戦略は何ですか?

StackOverflow https://stackoverflow.com/questions/820547

  •  03-07-2019
  •  | 
  •  

質問

Visual Studioを使用して、ほとんど手作業でC#とXAMLをコーディングして、MVVMパターンでWPFアプリケーションを実行しました。

Expression Blendの速度が向上し、GUIを使用してWPFアプリケーションをすばやくクリックできるようになりました。これは、XAML要素の80%あなたの時間。

しかし、Expression Blendの私のアプリケーションは、コードビハインドなどで処理されるイベントを使用して、よりシンプルで必然的に結合されているようです。

Expression Blendのこの単純なアプローチから、ビュー、ViewModel、ルーティングイベント、コマンドなどを備えた分離されたMVVMアプリケーションにどのように移行するかを想像するのは難しいと思いますBlendで視覚的に編集することはできなくなりましたが、Blendを使用してVisual Studioに貼り付けるXAMLの小さな部分を作成することに戻ります。

Expression Blendでより複雑なアプリケーションを使用している人にとって、プロジェクトをMVVM方式で分離し、同時に「Expression Blend方式」で構造化するための戦略は何ですか? (視覚的に意味のある方法でアプリケーションのすべての部分を表示および編集できる場合)、スケーリングGUIでそれらを引き続き編集できるようにしますか?

役に立ちましたか?

解決

私は何よりもまず、ラピッドプロトタイピングツールとしてBlendを使用しています。この目的のために、私は本当にそれが好きです。特に、必要なレイアウト/動作を得るための設定方法がわからない場合に非常に役立ちます。

メインプロジェクトファイルをBlendで直接編集することはほとんどありません。必要以上に複雑または冗長なマークアップを作成します。また、WPF / XAMLに精通するにつれて、Blendの使用はどんどん少なくなっています。

他のヒント

バージョン1以降、プロジェクトのUIにBlendを使用しています。私の目標は、デザイナーをプロジェクトに完全に統合することであるため、この目標の邪魔になるものは何でも検討しました。しばらくの間MVVMに気付いていませんが、私は自然に同じ結論に到達し、それらにパターンがあることを知らずにViewModelを作成しています。現在、MVVMに取り組んでいる他の人々の助けを借りて、常に改善されています。私は現在、すべてのUIがBlendで行われた、豊富なUIと機能を備えた3つのアプリケーションを開発しました。 Josh SmithのMSDN記事を読んで、Jason Dolingerの作品を見て、Karl Shifflettの作品をいくつか見てください。

ICommand、INotifyPropertyChanged、ObservableCollectionsの使用をよく見てください。

また、ViewModelからコントロールを操作する方法を探します。例として、ICollectionViewがあります。動物のリストがあり、それらをフィルタリングするタイプのセット(鳥、哺乳類など)があると仮定します

ICommandとICollectionViewを使用することにより、デザイナーが動物を表示するリストボックスとフィルターリストを表示するメニューを作成できる十分なコントロールを公開できます。 ICollectionViewには、現在の選択内容を知るのに十分な機能があり、" SortByBird"、" SortByMammal"などのICommandベースのコマンドがある場合、デザイナーがメニューを作成したときに、ウィンドウのコンテキストがこのウィンドウのViewModel)は、バインドする適切なオプションをデザイナーに提供します。

現在、会社の別のチームと協力して、私のプロジェクトがどのように設定されているかを説明しています。彼らはBlendを使用するデザイナーの新しい役割に積極的に対応しています。

Blendをエンドツーエンドで正常に使用できませんでした。

一般的なケースでは、VSでxamlを手動で編集する方が高速です(例外には、たとえば非標準のブラシを含むものが含まれます)。 Blendは非常にクリックに満足しており、それを完結させるのはそれほど速くありません。

Blendが本当に役立つもう1つの領域は、既存のコントロールからスタイル/テンプレートを作成することです。

それ以外は、まだ売れていません。コードでインスタンス化されたデータコンテキストを使用するとその機能が低下するため、そこでは何の助けにもなりません。また、役に立たないマークアップや静的なサイズなどを生成する傾向があります。

Blendは、物事がどのように行われるかについてのアイデアを提供するのに最適ですが、それが作成するxamlはひどく、密結合です。物事のxamlの側面をよりよく学ぶと、ブレンドを使用するよりもxamlを記述する方がはるかに高速であることがわかります。そのポイントに到達するまで、Blendで変更を加えることができますが、作成されたxamlをリファクタリングして、結合を弱くし、不要なUI要素を削除する必要があります。

私はこのパーティーに少し遅れていますが、誰かがまだ応答できることを願っています。デザイナーとプログラマーの間に線を引くプロセスの概要を示す検索結果をまだ見つけていません。その最初の部分はMVVMであるため、GUIと基礎となる「ビジネスロジック」との間に関連性はなく、私は今それを学ぶことに一生懸命取り組んでいます。私が誰も書いたことを見なかった他の部分は、開発者が基本的にある種のGUI DLLを提供できるように、実際にBlendでプロジェクトをどのように設計し、アプリケーションのGUIが魔法のように変わるのですか?

これが私が探しているものです-開発者はいつものようにコードを書き、またすべてが期待通りに動作することを証明する非常に基本的なGUIを書きます。一方、デザイナーは、人々が期待するすべてのユーザビリティ機能を備えたクールで小さなGUIを作成しています。これで、開発者はGUIを使用してアプリケーションを実行できますが、その場でデザイナーのGUIに切り替えることもできます。

オンザフライで実行できない場合、理想的なケースでは、開発者がVSソリューションにBlendソリューションのXAMLを含めることを意味しますか?その後、App.xamlで別の開始ファイルを参照するだけですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top