1

私は多くの検索を行いましたが、これを行う方法のサンプルが見つかりません。

目標は、ビューの背後にあるコード内のコードを回避しながら、ビュー モデルでこれらのイベントを処理することです。サンプル コードと XAML をいただければ幸いです。ソリューションで外部 DLL を使用する必要がある場合は、ソース コードを提供してください。

ビュー モデルは、ビューの存在とは無関係にコンパイルする必要があります。

実際、これができるかどうかはわかりません。この問題に関する洞察は大歓迎です。

これまでの進行状況のサンプル コードを参照してください。

http://database.hugetiger.com/dbExplore/MVVMCode.aspx

現在、mediaopend イベント msgbox はコード ビハインドから取得されています。msgbox が MyViewModel クラスから取得されるように、これをどのように変更できますか?

4

1 に答える 1

1

System.Windows.InteractivityとのMicrosoft.Expression.Interactionsコンボはあなたのニーズにぴったりのようです。

この例ではSystem.Windows.Interactivity EventTrigger、イベントでプロパティを変更し、メソッドMediaElement BufferingStartedを使用してモデルのメソッドを呼び出します。Microsoft.Expression.Interactions

<Window x:Class="WpfApplication14.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525"
            xmlns:expint="http://schemas.microsoft.com/expression/2010/interactions"
            xmlns:sysint="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity">
        <Grid>
            <MediaElement >
                <sysint:Interaction.Triggers>
                    <sysint:EventTrigger EventName="BufferingStarted" >
                        <expint:ChangePropertyAction PropertyName="MyProperty" Value="NeValue" />
                        <expint:CallMethodAction  MethodName="MyModelMethod"/>
                    </sysint:EventTrigger>
                </sysint:Interaction.Triggers>
            </MediaElement>
        </Grid>
    </Window>

System.Windows.InteractivityYuo はおよびMicrosoft.Expression.Interactionsdllへの参照を追加する必要があります。これMicrosoft.Expression.InteractionsExpressionBlend SDKの一部です

このコンボが WPF 開発にとって驚くべきものであることがわかったので、これが役立つことを願っています。

ハッピーコーディング:)

于 2013-01-22T06:14:57.690 に答える