如何将“this”传递给XAML中ObjectDataProvider的构造函数?

时间:2008-10-28 13:55:26

标签: wpf xaml objectdataprovider

如何将“this”传递给XAML中ObjectDataProvider的构造函数。

让我说我的演讲者课程是:

public class ApplicationPresenter(IView view){}

我的UserControl实现了IView。

我在下面的代码中传递给ConstructorParameters,以便UserControl可以使用默认构造函数创建ApplicationPresenter?

<ObjectDataProvider x:Key="ApplicationPresenterDS" 
ObjectType="{x:Type Fenix_Presenters:ApplicationPresenter}" 
ConstructorParameters="{ ?? what goes here ??}" d:IsDataSource="True" />

我只需要这样做就可以使用Blend 2.我知道我可以在后面的代码中执行此操作,但如果我这样做,我无法在Blend中实例化该类。我也知道我可以为ApplicationPresenter创建一个无参数构造函数,并向它传递一个实现IView的虚拟类,但如果可能的话,我宁愿在标记中执行此操作。

目前我的代码是:

public MyUserControl()
{
    InitializeComponent();
    DataContext = new ApplicationPresenter(this); 
}

3 个答案:

答案 0 :(得分:1)

我刚开始使用Wpf并且误以为我应该尝试在XAML中做所有事情。我刚观看了一些WindowsClient.net的视频,这些视频已经开始清理一些内容了。但男孩这是一项复杂的技术!

答案 1 :(得分:0)

我不知道它是否有效,但你可以给你的用户控制一个名字,例如

x:Name="myUserCotrol"

然后在绑定中使用它:

... ConstructorParameters="{Binding ElementName=myUserControl}" ...

这可行吗

答案 2 :(得分:0)

在下一版本的XAML中,demonstrated by Rob Relyea at this year's PDC将直接支持(如果内存服务良好)。