はい、の結合を介して:それは、ユーザーコントロールの場合
<Button Command="{Binding MyCommand}" />
、ちょうどそれがタイプICommand
の依存関係プロパティを公開します。また、MyCommandはViewModel内になければなりません。
EDIT:
はあなたのユーザーコントロール内にネストButton
を持って言う:ユーザーコントロールの背後にあるコードで
<UserControl x:Name="MyUc">
...
<Button Command={Binding NestedCommand, ElementName=MyUc} />
...
</UserControl>
、あなたは依存関係プロパティとして「NestedCommand」を公開する必要があります。
#region NestedCommand
public ICommand NestedCommand
{
get { return (ICommand)GetValue(NestedCommandProperty); }
set { SetValue(NestedCommandProperty, value); }
}
// Using a DependencyProperty as the backing store for NestedCommand. This enables animation, styling, binding, etc...
public static readonly DependencyProperty NestedCommandProperty =
DependencyProperty.Register("NestedCommand", typeof(ICommand), typeof(MyUserControlClassName), new UIPropertyMetadata(MyDefaultValue));
#endregion
"MyDefaultValue"をnullに設定し、 "MyUserControlClassName"をUserControlの名前に設定します。これを1分間Bobとします。
今
あなたはユーザーコントロールは、それがNestedCommandプロパティを公開することを使用します。
<Window>
...
<my:Bob NestedCommand="{Binding MyCommand}" />
...
</Window>
「私は」あなたのUserControlはもちろん、定義されたのxmlns名前空間です。
MyCommandは、ビューのDataContextとして配置したオブジェクトのViewModel a.k.aに定義する必要があります。
あなたがウェブ上でそれをすべてを知ることができますが、それは、INotifyPropertyChanged
を実装するクラスを作成し、それにICommand
を追加して、ウィンドウのコンストラクタ内に沸く:
public MyWindow()
{
...
this.DataContext = new MyViewModel();
...
}
現在MVVMを使用していません。これを実装する方法についていくつかのノート(+リンク?)を教えてください。 – Remotec
申し訳ありませんが、私は私の答えを編集します。しかし、バインディングを使用するためには、ビューのDataContextを設定する必要があります。 –
@RemotecUk編集した回答をご覧ください。 –