2011-11-08 15 views
3

私はMVVMモデルを初めて使用しています。xamlのViewModelへのビューのバインドでエラーが発生する「インスタンスを作成できません」

説明: SQLテーブルからデータを読み取り、ビューに表示するMVVMサンプルWPFアプリケーションをビルドします。 ViewはWPFToolkit:gridを使用して結果を表示します。アプリケーションは正常に動作し、結果をグリッドに表示できます。アプリケーションはVS2010を使用して開発されています。

PeopleListView - >表示結果

<UserControl.DataContext> 
    <vm:PeopleViewModel/> 
</UserControl.DataContext> 
<WpfToolkit:DataGrid ItemsSource="{Binding Path=GetAllItems}" AutoGenerateColumns="False" 
    Name="WpfGrid" Margin="0,0,28,0" Width="301"> 
    <WpfToolkit:DataGrid.Columns> 
     <WpfToolkit:DataGridTextColumn Header="Identifier" Width="Auto" Binding="{Binding Path=Id}"/> 
     <WpfToolkit:DataGridTextColumn Header="Description" Width="Auto" Binding="{Binding Path=Name}"/> 
     <WpfToolkit:DataGridTextColumn Header="Create Date" Width="Auto" Binding="{Binding Path=CreateDate}"/> 
    </WpfToolkit:DataGrid.Columns> 
</WpfToolkit:DataGrid> 

PeopleViewModel

- >

class PeopleViewModel 
{ 
    PeopleRepository _Repository; 

    public PeopleViewModel() 
    { 
     _Repository = new PeopleRepository(); 
    } 

     public IEnumerable<Person> GetAllItems 
     { 
      get { return _Repository.GetAllItems(); } 
     } 
} 

PeopleRepositoryは - >モデルクラスは、DBからすべての行を取得するには、エンティティフレームワークを使用します。

class PeopleRepository 
{ 
    MyEntities _Context; 

    public PeopleRepository() 
    { 
     _Context = new MyEntities(); 
    } 

    public IEnumerable<Person> GetAllItems() 
    { 
     return _Context.People; 
    } 

} 

エンティティフレームワークモデルを使用して作成されたMyEntities。

App.Configには、Entity Frameworkモデルによって作成された接続文字列があります。

Vstudioデザインモードでは、ビューユーザーコントロールがエラーをスローします。 "PeopleViewModel"でArgumentExceptionがスローされました。 "PeopleViewModel"のインスタンスを作成できません。ライン

<vm:PeopleViewModel/> 

感謝任意の助けに示す

エラー。ありがとう

+0

しかし、あなたのコードが実行時に正常に動作していますか? –

答えて

5

実行時にコードが正常に動作していると仮定します。 InDesignModeの間に、いくつかの 'リソース'固有の操作を無視するようにコンパイラに指示することができます。これは、取得している例外をエスケープします。

同様:

if(! DesignerProperties.GetIsInDesignMode(new DependencyObject()) { 
    //Use resources 
} 
+0

デザインビューの例外情報が次のように表示されます。指定された名前付き接続が構成で見つからないか、EntityClientプロバイダーで使用する予定がないか、または無効です。リポジトリのEntity Creationに関連するものですか?私はグリッドのすべての行を表示するアプリケーションを実行するときになぜこのエラーdoesntが来るのか分からない!! – ShyGuy

+0

@ShyGuy:コードがデザイン面で実行されているので存在しないためです。これは正解です。 – Will

+0

それは理にかなっています。ありがとう – ShyGuy

関連する問題