[英]Prism v4, MEF WPF DataBinding
首先,关于数据绑定的几个问题:
orderNumber
,我可以在xaml {Binding orderNumber}
像这样引用它吗? 我在一个单独的模块/程序集中有一个Prism服务,我通过MEF导入我的Shell应用程序。 我正在尝试对它进行数据绑定,但它似乎没有起作用。
我的解决方法如下。 在我的Shell.xaml.cs中:
[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;
}
有没有办法在设置对象之前在xaml中设置datacontext - 特别是在MEF / Prism场景方面? 在我的功能区对象上,我尝试了DataContext="{Binding MenuService}"
但这不起作用。
控件的默认DataContext是否设置为代码隐藏? 例如,如果我在test.xaml.cs中有一个变量orderNumber,我可以在xaml {Binding orderNumber}中像这样引用它吗?
否。默认情况下,没有DataContext,它使用WPF中的层次结构机制从父级继承。 如果需要控件,则需要为控件显式设置DataContext。
我只能数据绑定到对象的属性是否正确?
是。 您只能绑定到属性。 如果要使用双向绑定,则该对象还必须是DependencyObject
或实现INotifyPropertyChanged
。
有没有办法在设置对象之前在xaml中设置datacontext - 特别是在MEF / Prism场景方面? 在我的功能区对象上,我尝试了DataContext =“{Binding MenuService}”,但这不起作用。
这将尝试使用层次结构将DataContext
设置为包含DataContext的MenuService
属性(即:父控件/窗口的DataContext的MenuService属性)。 您无法绑定到自己来设置DataContext。
您可以在XAML中创建一个新对象以用作DataContext,或者让一个包含对象为您提供DataContext。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.