私は MVVM パターンを使用しているため、ビュー モデルはビューについて何も認識せず、ビューは DataTemplates を介して表示されます。
ビューが表示されなくなったら、(ユーティリティ クラスを使用して) スクリーンショットを撮りたいと思います。したがって、FrameworkElement.Unloaded にバインドし、ヒットしたら、別のコントロールで使用するユーザー コントロールのスクリーンショットを撮り、移動するビューを選択します。
この記事を読むと、添付されたプロパティが機能するように見えます (UserControl オブジェクトで使用しています) http://blog.functionalfun.net/2008/09/hooking-up-commands-to-events- in-wpf.html
バインディングは DependencyObject または DependencyProperty でのみ設定できるというエラーが表示されます。私は彼の指示にきちんと従った。なぜこれが機能しないのか、またはMVVMシナリオでどのようにバインドできるのか考えていますか?
その特定のイベントまたはルート xaml ノードのイベントにバインドすることはできませんか?
これがコードです(上記のリンクの EventBehaviorFactory に加えて)
public static class FrameworkElementBehavior
{
public static readonly DependencyProperty UnloadedCommandProperty = EventBehaviourFactory.CreateCommandExecutionEventBehaviour(FrameworkElement.UnloadedEvent, "UnloadedCommand", typeof(FrameworkElementBehavior));
public static void SetUnloadedCommand(DependencyObject o, ICommand value)
{
o.SetValue(UnloadedCommandProperty, value);
}
public static ICommand GetUnloadedCommand(DependencyObject o)
{
return o.GetValue(UnloadedCommandProperty) as ICommand;
}
}
<UserControl x:Class="WTF.BuxComp.Prism.Modules.Win.OrderEntryPos.Views.CustomerView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WTF.BuxComp.Prism.Modules.Win.OrderEntryPos.Helpers"
mc:Ignorable="d"
d:DesignHeight="510" d:DesignWidth="716"
local:FrameworkElementBehavior.UnloadedCommand="{Binding UnloadedCommand}">
正確なエラーは
タイプ「CustomerView」の「SetUnloadedCommand」プロパティに「Binding」を設定することはできません。「Binding」は、DependencyObject の DependencyProperty でのみ設定できます。