1

Windows Storeの分割アプリで、ビューモデルをページからユーザーコントロールに渡したい。シナリオは、ビューのようなUserControlを使用して、いくつかの一般的なxamlを複数のページで再利用したいというものです。

メインページ:

<common:LayoutAwarePage
    ...
    DataContext="{Binding ViewModel, RelativeSource={RelativeSource Self}}"
    ... >
  <views:MyUserControlView Model="{Binding ViewModel}" />
...

ユーザー制御コードの場合:

public sealed partial class MyUserControlView : UserControl
{
    public static readonly DependencyProperty ModelProperty =
        DependencyProperty.Register("Model", typeof(MenuSource),
        typeof(MyUserControlView), null);
    ...
    public ModelType Model
    {
        get
        {
            return this.GetValue(ModelProperty) as ModelType ;
        }

        set
        {
            this.SetValue(ModelProperty, value);
        }
    }

モデルセッターが呼び出されることはありません。ユーザーコントロールを親ページのビューモデルに接続するにはどうすればよいですか?

または、ページで使用するための共有ビューを実装するためのより良い方法はありますか?

ありがとう。

-ジョン

4

1 に答える 1

2

正しいバインディングは次のようになります。

<views:MyUserControlView Model="{Binding}" />

DataContext上記のページはすでに設定されています。すべてのバインディングは、現在のに関連していDataContextます。

ただし、セッターはまだ呼び出されません。DependencyPropertyfromコードにアクセスするための単なるラッパーです。バインディングはSetValue直接呼び出します。

要件によっては、独自のを定義する必要がない場合もありますModel DependencyPropertyDataContext各コントロールは、その親コン​​トロールから自動的に継承します。上記の例では、ユーザーコントロールはすでにDataContextページと同じビューモデルに設定されています。

于 2013-02-24T15:42:26.300 に答える