Mijn titel rechtvaardigt niet zoveel wat ik probeer te doen. Ik ben redelijk nieuw in het gebruik van Entity Framework zo kaal bij mij. Ik heb een MVVM-toepassing die Entity Framework 4.1, wpf en C# gebruikt. Ik probeer het zo te krijgen dat wanneer ik dubbelklik een rij van een datagrid (het raster bindt aan een EntitySet in mijn DataBase met de naam LoanComparisons) in een weergave die ik LoanListingView heb genoemd, deze overschakelt naar mijn andere weergave (genaamd LoanCalculatorView) die de informatie in mijn database (EntitySet met de naam Leningen) doorgeeft aan de hand van de informatie in de rij die werd geselecteerd.
Tot nu toe heb ik de app al zo bekabeld dat ik dubbelklik op een rij in LoanListingView DataGrid opent LoanCalculatorView met standaardwaarden die in de velden zijn ingevoerd.
Nu voor wat code. Hier is mijn DataGrid die zich bindt aan mijn database-entiteitenset met de naam LoanComparisons:
Dubbelklikken op een rij opent mijn LoanCalculatorView met vooraf ingestelde waarden. Momenteel voert de DoubleClick-gebeurtenis deze code uit:
/// Handles double-clicks on datagrid rows
private void OnDoubleClick(object sender, MouseButtonEventArgs e)
{
if (sender != null)
{
DataGrid grid = sender as DataGrid;
if (grid != null && grid.SelectedItems != null && grid.SelectedItems.Count == 1)
{
DataGridRow dgr = grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem) as DataGridRow;
_viewModel.Open(null);
//The DataContext will be set to dgr but since "DataGridRow"
//does not contain the Open method I cant do this:
// DataContext = dgr;
//dgr.Open(dgr);
//
//I think this is where I am lost at
}
}
}
Op dit moment geeft de methode Open een ongeldige waarde door in de methode omdat ik niet zeker weet hoe ik de informatie van mijn andere EntitySet met de naam 'Leningen' moet doorgeven. De open methode is als volgt:
//Creates a new LoanCalculatorViewModel that calls the SetComparisonDataRecord method
//passing it an argument comparison and changes the DataContext to LoanCalculatorView.
public void Open(LoanComparison comparison)
{
var loanCalculatorViewModel = new LoanCalculatorViewModel();
loanCalculatorViewModel.SetComparisonDataRecord(comparison);
var loanCalculatorView = new LoanCalculatorView {DataContext = loanCalculatorViewModel};
loanCalculatorView.Show();
}
Ten slotte is het SetComparisonDataRecord op dit moment gewoon leeg, maar ik heb een opmerking geplaatst over wat er in zou moeten staan en hoe ik de waarden wil instellen:
public void SetComparisonDataRecord(LoanComparison comparison)
{
//SharedValues.HomeValue = comparison.HomeValue;
}
Een ander ding om in gedachten te houden, mijn twee EntitySets hebben een een-op-veel relatie. Eén lening en een verzameling leningcompensaties. Is het mogelijk om mij te laten zien hoe ik de informatie uit de geselecteerde rij (die een entiteit van mijn LoanComparisons EntitySet representeert) doorgeeft aan de LoanCalculatorView? Alvast heel erg bedankt!