2011-12-26 15 views
1

私は、各患者がゼロまたは1つのアドレスを持つことができ、各アドレスには1人の患者がいるクラスの患者がいます。私はこれに続いて、Walkthrougでエンティティフレームワークとコードを最初に使用します。患者データソースをWPFウィンドウ上でドラッグすると、DepartmentとのチュートリアルのようにPatient CollectionViewSourceを持つグリッドが作成されます。私の問題は、チュートリアルのCoursesプロパティと同じように、Addressデータソースをウィンドウに追加できないことです(1対多の関係があります)。患者からのアドレスプロパティは一種のグレー表示されている:wpfデータバインディングの詳細と1対1の関連付け(エンティティフレームワーク)

enter image description here

を私は、XAML内経路を介してAddressプロパティを追加しようとした:

<Grid DataContext="{StaticResource patientViewSource}"> 
... 
    <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Name="patientDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" > 
    <DataGrid.Columns> 
     <DataGridTextColumn x:Name="lastNameColumn" Binding="{Binding Path=LastName}" />     
     <DataGridTextColumn x:Name="addressStreetColumn" Binding="{Binding Path=Address.Street}" /> 
    </DataGrid.Columns> 
    </DataGrid> 
... 
</Grid> 

結果は、既存の患者からのストリートは以下のように示されたことでした意図されました。しかし、私は新しい患者と住所を空のグリッドの行に患者の名前と通りの名前を書き込むことで挿入しようとすると、私はInvalidOperationExceptionを得て、 "双方向のバインディングはパスかXPathが必要です"と言う。私は、私がアドレスデータソースをウィンドウにドラッグできない理由を推測します。ここでは、標準の1:n関係は扱いません。

誰かが、通り名を入力するとすぐに、プログラムが自動的に正しい患者に接続された新しい住所インスタンスを作成(および保持)することを可能にする方法を教えていただけますか?

答えて

1

私はそれを理解しました。一つは、住所を展開し、詳細をクリックしています。この後

enter image description here

それがドラッグ可能です。

これがデフォルトの選択だった場合、より簡単になりました。

関連する問題