如何从ViewModel上的WebBrowser控件订阅Navigated事件?(MVVM)



所以基本上我试图订阅WebBrowser控件上的Navigated事件,所以我可以获得WebBrowser的源,但我不知道如何从ViewModel

订阅它我试过从代码后订阅它,然后发送消息到ViewModel(我使用MVVM光),但ViewModel没有收到消息(我是如何做的一个例子)

(后台代码)

// I don't remember the NavigatedArgs so I just put NavigatedArgs heh
WebBrowser_Navigated(object sender, NavigatedArgs)
{
// Some logic
var msg = new SendMessage() { property = param };                   
Messenger.Default.Send(msg)
}

(ViewModel)

Messenger.Default.Register<SendMessage>
(
this,
(action) => ReceiveMessage(action)
);

所以环顾四周,我能够做到这一点,通过将事件绑定到XAML文件上的命令与交互触发器,然后使用控件作为CommandParameter:

<WebBrowser x:Name="Browser" Grid.Row="1" Source="http://link.to.source">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Navigated">
<i:InvokeCommandAction Command="{Binding NavigatedCommand}" CommandParameter="{Binding RelativeSource=
{RelativeSource
Mode=FindAncestor,
AncestorType={x:Type WebBrowser}}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</WebBrowser>

,然后在ViewModel上处理它:

public RelayCommand<WebBrowser> NavigatedCommand { get; set; }
public ViewModel()
{
NavigatedCommand = new RelayCommand<WebBrowser>((e) => DoStuff(e));
}

最新更新