ここで私が問題を解決した方法です。幸い私はZoomPanControlのソースコードにアクセスできます。
私はこのような「FitView」コマンドのZoomPanControl中たDependencyPropertyを実装している最初の:私は依存プロパティを設定するコントロールの「OnApplyTemplate()」メソッドで
public static readonly DependencyProperty FitCommandDepPropProperty = DependencyProperty.Register(
"FitCommandDepProp", typeof (ICommand), typeof (ZoomAndPanControl), new PropertyMetadata(default(ICommand)));
public ICommand FitCommandDepProp
{
get { return (ICommand) GetValue(FitCommandDepPropProperty); }
set { SetValue(FitCommandDepPropProperty, value); }
}
:
FitCommandDepProp = FitCommand;
自分のアプリケーションの詳細ビューで
私はこのように私のViewModelにコマンド依存関係プロパティをバインド:
<zoomAndPan:ZoomAndPanControl x:Name="zoomAndPanControl"
FitCommandDepProp="{Binding FitCommand, Mode=OneWayToSource}"
重要な部分は、Mode = OneWayToSourceです。これは、ZoomPanControlのコマンドをdetail-viewmodelに「転送」します。
Detail-viewmodelには、ICommandにバインドするプロパティがあります。この時点から私は私のビューモデルロジックでコマンドを持っています。私はツールバーにバインドされているビューモデルにFitCommandを渡すためのメカニズムを実装しました。イベントを使用することもできますし、好きなようにコマンドを渡すこともできます。
ツールバーのビューモデルには、FitCommandのICommandプロパティもあります。私は、このプロパティにバインドするだけツールバー-ビューで
public ICommand FitCommand
{
get { return _fitCommand; }
set
{
if (Equals(value, _fitCommand)) return;
_fitCommand = value;
NotifyOfPropertyChange(() => FitCommand);
}
}
:その後
<fluent:Button x:Name="FitButton" Command="{Binding FitCommand}" Header="Fit View"/>
、ビュー・コマンドは、個別に各詳細ビューのために用意されています。
しかし、私はZoomPanControlのソースコードにアクセスすることなくこれを解決する方法は知られていません。