2

WebView でイベントをバインドしたいのですが、例外があります:

タイプ ' ' の例外がWindows.UI.Xaml.Markup.XamlParseExceptionVK.exe で発生しましたが、ユーザー コードでは処理されませんでした

WinRT 情報: タイプ ' ' のインスタンスをタイプ ' ' のコレクションに追加できませWin8nl.Behaviors.EventToCommandBehaviorSystem.Collections.ObjectModel.ObservableCollection<WinRtBehaviors.Behavior>

ご存じのとおり、Windows SDKには System.Interaction.dll がありません。Web (Windows RT 用にコンパイル) または Blend フォルダーで検索しようとしましたが、見つかりませんでした。

ビヘイビアーを使用してビューモデルのコントロールと RelayCommands のイベントを接続できるようにするWin8nlを見つけたよりも。

それらは、ビュー用にロードされたイベントをバインドするのに役立ちます: コードは次のとおりです:

...
xmlns:WinRtBehaviors="using:WinRtBehaviors"
xmlns:Win8nl_Behavior="using:Win8nl.Behaviors"
DataContext="{Binding Login, Source={StaticResource Locator}}">

<WebView x:Name="webView" 
    Grid.Row="1"                 
    Grid.Column="1"
    HorizontalAlignment="Left"
    VerticalAlignment="Top" 
    ScrollViewer.VerticalScrollBarVisibility="Hidden"
    ScrollViewer.HorizontalScrollBarVisibility="Hidden"
    Height="420" Width="530">
    <WinRtBehaviors:Interaction.Behaviors>
        <Win8nl_Behavior:EventToCommandBehavior Event="LoadCompleted"       
                                            Command="WebViewLoadedCommand" />
        </WinRtBehaviors:Interaction.Behaviors>
    </WebView>

ビューモデル:

public LoginViewModel(IDataService dataService)
{
    WebViewLoadedCommand = new RelayCommand(() => {
    var msg = new MessageDialog("Web View Loaded");

    msg.ShowAsync();
    });
}

public RelayCommand WebViewLoadedCommand { get; private set; }

また、WP7 と System.Interaction で行っていたように、NavigatedEventsArgs パラメーターを取得したい:

 <i:Interaction.Triggers>
     <i:EventTrigger EventName="Navigated">
         <mvvm:EventToCommand Command="{Binding NavigatedCommand, Mode=OneWay}" PassEventArgsToCommand="True" />
      </i:EventTrigger>
 </i:Interaction.Triggers>

ありがとう!

4

1 に答える 1

1

WinRt Triggersが必要です。

このオープン ソース プロジェクトは、WinRT の Interaction.Triggers を実装します。

于 2012-10-26T09:27:24.107 に答える