簡體   English   中英

Prism v4,MEF WPF DataBinding

[英]Prism v4, MEF WPF DataBinding

首先,關於數據綁定的幾個問題:

  • 控件的默認DataContext是否設置為代碼隱藏? 例如,如果我在test.xaml.cs中有一個變量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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM