C# 使用实体框架和MVVM将数据库信息从一个视图模型传递到另一个视图模型
我有一个使用实体框架4.1、WPF和C#的MVVM应用程序。我正在尝试获取它,以便当我在一个名为LoanListingView的视图中双击datagrid(网格绑定到数据库中名为LoanComparisons的EntitySet)中的一行时,它会切换到另一个视图(名为LoanCalculatorView),传递数据库中的信息(EntitySet名为Loans)根据所选行中给定的信息 到目前为止,我已经连接了该应用程序,因此双击LoanListingView数据网格中的一行将打开LoanCalculator视图,该视图的默认值已输入到其字段中 现在来看一些代码。以下是绑定到名为LoanComparisons的数据库实体集的DataGrid:C# 使用实体框架和MVVM将数据库信息从一个视图模型传递到另一个视图模型,c#,wpf,xaml,entity-framework-4.1,C#,Wpf,Xaml,Entity Framework 4.1,我有一个使用实体框架4.1、WPF和C#的MVVM应用程序。我正在尝试获取它,以便当我在一个名为LoanListingView的视图中双击datagrid(网格绑定到数据库中名为LoanComparisons的EntitySet)中的一行时,它会切换到另一个视图(名为LoanCalculatorView),传递数据库中的信息(EntitySet名为Loans)根据所选行中给定的信息 到目前为止,我已经连接了该应用程序,因此双击LoanListingView数据网格中的一行将打开LoanCalcu
<DataGrid MouseDoubleClick="OnDoubleClick" ItemsSource="{Binding Path=LoanComparisons}"
AutoGenerateColumns="False" SelectionChanged="DataGrid_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Header="Customer Name" Binding="{Binding Path=Name}" />
<DataGridTextColumn IsReadOnly="True" Header="Home Value" Binding="{Binding Path=HomeValue}" />
<DataGridTextColumn IsReadOnly="True" Header="Monthly Income" Binding="{Binding Path=MonthlyIncome}" />
<DataGridTextColumn IsReadOnly="True" Header="First Payment" Binding="{Binding Path=FirstPaymentDate}" />
</DataGrid.Columns>
</DataGrid>
目前,Open方法将null值传递到它的方法中,因为我不确定如何从另一个名为“Loans”的EntitySet传递信息。开放式方法如下:
//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();
}
最后,SetComparisonDataRecord现在只是空的,但我对其中应该包含的内容以及我希望如何设置值进行了注释:
public void SetComparisonDataRecord(LoanComparison comparison)
{
//SharedValues.HomeValue = comparison.HomeValue;
}
还有一件事要记住,我的两个实体集有一对多的关系。一笔贷款和一系列贷款比较。是否可以向我演示如何将所选行(表示我的LoanComparisons EntitySet中的实体)的信息传递到LoanCalculator视图?一个避免麻烦的建议是将属性绑定到datagrid的SelectedItem属性,这样您就不必担心“当前选择”在触发双击事件时 对于你正在做的事情,我将把这些电话细分如下:
这基本上就是您要寻找的吗?一个避免麻烦的建议是将属性绑定到datagrid的SelectedItem属性,这样在触发双击事件时就不必担心“当前选择” 对于你正在做的事情,我将把这些电话细分如下:
这就是您想要的吗?像这样更改了我的OnDoubleClick方法,其中DataContext在Open方法中设置:
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)
{
var lc = grid.SelectedItem as LoanComparison;
if (lc != null) _viewModel.Open(lc);
}
}
}
public void Open(LoanComparison comparison)
{
var loanCalculatorViewModel = new LoanCalculatorViewModel();
loanCalculatorViewModel.SetComparisonDataRecord(comparison);
var loanCalculatorView = new LoanCalculatorView {DataContext = loanCalculatorViewModel};
loanCalculatorView.Show();
}
简单开放式方法:
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)
{
var lc = grid.SelectedItem as LoanComparison;
if (lc != null) _viewModel.Open(lc);
}
}
}
public void Open(LoanComparison comparison)
{
var loanCalculatorViewModel = new LoanCalculatorViewModel();
loanCalculatorViewModel.SetComparisonDataRecord(comparison);
var loanCalculatorView = new LoanCalculatorView {DataContext = loanCalculatorViewModel};
loanCalculatorView.Show();
}
在此基础上,我编写了一个基本查询,询问数据库中的“贷款”实体:
抱歉给你添麻烦了!感谢您的帮助:)像这样更改了我的OnDoubleClick方法,其中DataContext在Open方法中设置:
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)
{
var lc = grid.SelectedItem as LoanComparison;
if (lc != null) _viewModel.Open(lc);
}
}
}
public void Open(LoanComparison comparison)
{
var loanCalculatorViewModel = new LoanCalculatorViewModel();
loanCalculatorViewModel.SetComparisonDataRecord(comparison);
var loanCalculatorView = new LoanCalculatorView {DataContext = loanCalculatorViewModel};
loanCalculatorView.Show();
}
简单开放式方法:
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)
{
var lc = grid.SelectedItem as LoanComparison;
if (lc != null) _viewModel.Open(lc);
}
}
}
public void Open(LoanComparison comparison)
{
var loanCalculatorViewModel = new LoanCalculatorViewModel();
loanCalculatorViewModel.SetComparisonDataRecord(comparison);
var loanCalculatorView = new LoanCalculatorView {DataContext = loanCalculatorViewModel};
loanCalculatorView.Show();
}
在此基础上,我编写了一个基本查询,询问数据库中的“贷款”实体:
抱歉给你添麻烦了!谢谢你的帮助:)谢谢:)需要一些编码伙伴的帮助才能帮到我。我会发布我的答案谢谢:)需要一些编码伙伴的帮助才能帮到我。我会发布我的答案