wpf MVVM 中的多个 DataContext?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/21760263/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Multiple DataContext in wpf MVVM?
提问by darthwillard
i have a window that i'd like to bind the data context from 2 different DataModels from. i've come across this post: WPF binding multiple controls to different datacontextsand it's not working in my code. i don't know if you have to set a 'new' instance of the classes to make it work, but i can't get it to show my data. here's a sample
我有一个窗口,我想从中绑定来自 2 个不同 DataModel 的数据上下文。我遇到过这篇文章: WPF 将多个控件绑定到不同的数据上下文,但它在我的代码中不起作用。我不知道您是否必须设置类的“新”实例才能使其工作,但我无法让它显示我的数据。这是一个示例
<Grid>
<Button Command="{Binding FurnaceDataViewModel.StartButtonCommand}"/>
<Button Command="{Binding FurnaceDataViewModel.StopButtonCommand}"/>
<Button Command="{Binding FurnaceDataViewModel.ClearButtonCommand}"/>
<Label Content="{Binding FurnaceDataModel.TotalTimeIdle}" />
<Label Content="{Binding FurnaceDataModel.GallonsUsed}" />
<Label Content="{Binding FurnaceDataModel.TotalMoney}" />
<Label Content="{Binding FurnaceDataModel.TotalTimeRun}" />
</Grid>
i have my MainWindow Class:
我有我的 MainWindow 类:
FurnaceDataContext dataContext = new FurnaceDataContext();
InitializeComponent();
DataContext = dataContext;
here's my DataContext class
这是我的 DataContext 类
class FurnaceDataContext
{
public FurnaceDataViewModel FurnaceDataViewModel { get; set; }
public FurnaceDataModel FurnaceDataModel { get; set; }
public SqlDataModel SqlDataModel { get; set; }
}
i can't get it to display my text correctly or my button commands. any ideas?
我无法让它正确显示我的文本或我的按钮命令。有任何想法吗?
回答by codeSetter
You need to instantiate inner props....
您需要实例化内部道具....
FurnaceDataContext dataContext = new FurnaceDataContext();
dataContext.FurnaceDataViewModel = new FurnaceDataViewModel();
dataContext.FurnaceDataModel = new FurnaceDataModel();
DataContext = dataContext;

