[英]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.