繁体   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