0

Prism v2(2009年10月)でインターセプトを使用できません。パブリックプロパティのセッターをインターセプトし、プロパティが変更された場合はPropertyChangedイベントを発生させようとしています。コードが実行されていることがわかります(デバッガーをステップスルーするか、デバッグポイントを追加します)。ただし、これらのプロパティにバインドされているWPFウィンドウコントロールは更新されません。これらのイベントをサブスクライブしてコンソールに印刷すると、プロパティ変更通知を印刷できます。

したがって、ビューにViewModelのプロパティを更新するテキストボックスがある場合、ViewModelのプロパティが更新されます。ただし、ビューのボタン(DelegateCommandとして実装)によってプロパティが更新される場合、イベントがトリガーされてコンソールが出力されても、そのプロパティにバインドされているテキストボックス(TwoWay Binding Mode)は更新されません。どのプロパティが更新されたかに関する情報。誰かがこの問題に遭遇しましたか?

これが私が書いたサンプルのWPFアプリケーションです。Wordpressではzipファイルのアップロードが許可されていないため、名前をpdf拡張子に変更しました(ファイルの名前をzip拡張子に変更します)。私が間違っていることを教えてください。前もって感謝します。

4

1 に答える 1

0

TransparentProxyInterceptor に問題があるようです。TransparentProxyInterceptor からこれらのプロパティを仮想化し、VirtualMethodInterceptor を宣言するように変更すると、プログラムは機能します。

        _container.RegisterType<SampleViewModel>()
            .Configure<Interception>()
            .SetDefaultInterceptorFor<SampleViewModel>(new TransparentProxyInterceptor())
            .AddPolicy("NotifyPropertyChanged")
            .AddMatchingRule(new PropertyMatchingRule("*", PropertyMatchingOption.Set))
            .AddCallHandler(typeof(NotifyPropertyChangedCallHandler));

        _container.RegisterType<SampleViewModel>()
            .Configure<Interception>()
            .SetDefaultInterceptorFor<SampleViewModel>(new VirtualMethodInterceptor())
            .AddPolicy("NotifyPropertyChanged")
            .AddMatchingRule(new PropertyMatchingRule("*", PropertyMatchingOption.Set))
            .AddCallHandler(typeof(NotifyPropertyChangedCallHandler));

どうしてか分かりません。何か案が?

于 2010-03-28T23:31:14.803 に答える