C# Prism v4,MEF WPF数据绑定
首先,关于数据绑定的几个问题: 控件的默认DataContext是否设置为codebehind?例如,如果我在test.xaml.cs中有一个变量orderNumber,我可以在xaml{Binding orderNumber}中这样引用它吗? 我只能将数据绑定到对象的属性,对吗? 我在一个单独的模块/程序集中有一个Prism服务,我通过MEF将其导入Shell应用程序。我正在尝试对它进行数据绑定,但它似乎不起作用 我的解决方法如下。 在my Shell.xaml.cs中: 是否有一种方法可以在设置对象之前在xaml中设置datacontext?特别是在MEF/Prism场景中?在ribbon对象上,我尝试了DataContext={Binding MenuService},但没有成功 控件的默认DataContext是否设置为codebehind?例如,如果我在test.xaml.cs中有一个变量orderNumber,我可以在xaml{Binding orderNumber}中这样引用它吗 否。默认情况下,没有DataContext,它是使用WPF中的层次结构机制从父级继承的。如果希望控件具有DataContext,则需要显式设置该控件的DataContext 我只能将数据绑定到对象的属性,对吗 对。只能绑定到属性。如果希望双向绑定工作,则该对象还必须是DependencyObject或实现INotifyPropertyChanged 是否有一种方法可以在设置对象之前在xaml中设置datacontext?特别是在MEF/Prism场景中?在ribbon对象上,我尝试了DataContext={Binding MenuService},但没有成功 这将尝试使用层次结构(即父控件/窗口的DataContext的MenuService属性)将DataContext设置为包含DataContext的MenuService属性。您不能绑定到自己来设置DataContext 您可以在XAML中创建一个新对象用作DataContext,或者让一个包含对象为您提供DataContext 控件的默认DataContext是否设置为codebehind?例如,如果我在test.xaml.cs中有一个变量orderNumber,我可以在xaml{Binding orderNumber}中这样引用它吗 否。默认情况下,没有DataContext,它是使用WPF中的层次结构机制从父级继承的。如果希望控件具有DataContext,则需要显式设置该控件的DataContext 我只能将数据绑定到对象的属性,对吗 对。只能绑定到属性。如果希望双向绑定工作,则该对象还必须是DependencyObject或实现INotifyPropertyChanged 是否有一种方法可以在设置对象之前在xaml中设置datacontext?特别是在MEF/Prism场景中?在ribbon对象上,我尝试了DataContext={Binding MenuService},但没有成功 这将尝试使用层次结构(即父控件/窗口的DataContext的MenuService属性)将DataContext设置为包含DataContext的MenuService属性。您不能绑定到自己来设置DataContextC# Prism v4,MEF WPF数据绑定,c#,wpf,data-binding,prism,mef,C#,Wpf,Data Binding,Prism,Mef,首先,关于数据绑定的几个问题: 控件的默认DataContext是否设置为codebehind?例如,如果我在test.xaml.cs中有一个变量orderNumber,我可以在xaml{Binding orderNumber}中这样引用它吗? 我只能将数据绑定到对象的属性,对吗? 我在一个单独的模块/程序集中有一个Prism服务,我通过MEF将其导入Shell应用程序。我正在尝试对它进行数据绑定,但它似乎不起作用 我的解决方法如下。 在my Shell.xaml.cs中: 是否有一种方法可以在
您可以在XAML中创建一个新对象用作DataContext,或者让一个包含对象为您提供DataContext。@Chris:MenuService是在Ribbon还是RibbonWindow中定义的?IRibbonService接口和RibbonService类在名为Infrastructure的单独项目中声明/实例化,并随MEF一起导出。。。然后用上面问题中使用的代码导入RibbonWindow。我尝试过这样做,根xaml元素的DataContext为self,但没有数据绑定,可能是因为我需要DependencyProperty不确定,我需要仔细阅读一下用过的东西for@Chris:MenuService是在Ribbon还是RibbonWindow中定义的?IRibbonService接口和RibbonService类在名为Infrastructure的单独项目中声明/实例化,并与MEF一起导出。。。然后用上面问题中使用的代码导入RibbonWindow。我尝试过这样做,根xaml元素的DataContext为self,但没有数据绑定,可能是因为我需要DependencyProperty不确定,我需要了解它的用途
[Import(AllowRecomposition = false)]
private IRibbonService _menuService;
public IRibbonService MenuService
{
get
{
return _menuService;
}
}
public void OnImportsSatisfied()
{
Debug.WriteLine("Imports satisfied", "Prism");
this._moduleManager.LoadModuleCompleted += new EventHandler<LoadModuleCompletedEventArgs>(moduleManager_LoadModuleCompleted);
//TODO figure out how to properly bind to the ribbon
Ribbon.DataContext = _menuService;
RibbonAppMenu.DataContext = _menuService.ApplicationMenuData;
}