2

XAMLのObjectDataProviderのコンストラクターに「this」をどのように渡しますか。

私のプレゼンタークラスは次のとおりです。

public class ApplicationPresenter(IView view){}

そして、私のUserControlがIViewを実装していること。

UserControlがデフォルトのコンストラクターを使用してApplicationPresenterを作成できるように、以下のコードでConstructorParametersに何を渡しますか?

<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); 
}
4

3 に答える 3

1

私はWpfを使い始めたばかりで、XAMLですべてをやろうとするべきだと誤解していました。WindowsClient.netからのいくつかのビデオを見たところ、いくつかの問題が解決し始めています。しかし、これは複雑なテクノロジーです!!!

于 2008-10-29T18:50:54.253 に答える
0

それが機能するかどうかはわかりませんが、ユーザーコントロールに名前を付けることができます。

x:Name="myUserCotrol"

そしてそれをバインディングで使用します:

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

これはうまくいくかもしれません

于 2008-10-28T13:58:49.960 に答える
0

これは、今年の PDC で Rob Relyea によって実証されたように、XAML の次のバージョンで直接サポートされます (メモリが適切に機能する場合) 。

于 2008-11-03T21:02:42.407 に答える