1

私は別の質問を見てきましたが、私が得ているエラーはより具体的です。

このサンプルデータは、デフォルトのパラメーターなしコンストラクターを持たないビューモデルを使用していますが、パブリックパラメーター化されたコンストラクターを持っています。

設計時データはリフレクションを使用しており、これを処理できるはずです(実際にはクラスをインスタンス化しないため)。したがって、設計時に次のエラーが発生する理由について混乱します。

タイプ「AccessDeniedViewModel」には、アクセス可能なコンストラクターは含まれていません。

設計時のデータを含むXAMLの行はですd:DataContext="{d:DesignData /SampleData/AccessDeniedViewModelSampleData.xaml}"。Blendの「クラスからサンプルデータを作成...」を使用して、このデータファイルを生成しました。

ただし、このビューをVisual Studio 2010で開くと、デザイン時のデータと一緒に完全に表示できます。

設計時に使用するためだけにパラメーターなしのコンストラクターを配置したくはありません。この設計データをBlendで機能させる方法をいただければ幸いです。

編集:また、バインディングのサポートはまだあります。ビューにバインディングを追加すると、正しいタイプに解決されているように、使用可能なプロパティが一覧表示され、インスタンス化できません。

4

1 に答える 1

2

デフォルトのコンストラクターを提供する必要があります。その理由は次のとおりです。XML-Serializableクラスにパラメーターなしのコンストラクターが必要な理由

私が考えることができる他の唯一のオプションは、ビューのコンストラクターにロジックを記述して、設計時にxamlをロードすることです。これにより、コンストラクターのパラメーター化されたバージョンを呼び出すことができます。

于 2011-11-22T15:38:34.693 に答える