2008-10-28 4 views
2

Comment passez-vous "this" au constructeur pour ObjectDataProvider en XAML.Comment passez-vous "this" au constructeur pour ObjectDataProvider en XAML?

Disons que ma classe de présentateur est:

public class ApplicationPresenter(IView view){} 

et que mon UserControl implémente IView.

Que dois-je passer à ConstructorParameters dans le code ci-dessous pour que le UserControl puisse créer le ApplicationPresenter en utilisant le constructeur par défaut?

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

Je ne ai besoin de faire cela pour que je puisse utiliser Blend 2. Je sais que je peux le faire dans le code derrière, mais si je le fais je ne peux pas instancier la classe à l'intérieur Blend. Je sais également que je peux créer un constructeur sans paramètre pour ApplicationPresenter et lui passer une classe factice qui implémente IView, mais je préférerais le faire dans le balisage si possible.

Mon code derrière au moment est:

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

Répondre

0

je ne sais pas si cela fonctionne, mais vous pouvez donner à votre contrôle utilisateur un nom, par exemple

x:Name="myUserCotrol" 

puis l'utiliser dans une reliure:

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

cela pourrait fonctionner

+0

Cela ne fonctionnera pas car le ObjectDataProvider ne dérive pas de DependencyObject. Par conséquent, ConstructorParameters n'est pas un DependencyProperty, ce qui est obligatoire pour DataBinding. –

1

Je viens juste de commencer avec WPF et était sous l'idée erronée que je devrais essayer de tout faire en XAML. Je viens de regarder quelques vidéos de WindowsClient.net qui commencent à effacer certaines choses. Mais le garçon est-ce une technologie complexe !!!

Questions connexes