WebView2交互视图模型(WPF/C)——>;限制域

WebView2交互视图模型(WPF/C)——>;限制域,wpf,xaml,binding,viewmodel,webview2,Wpf,Xaml,Binding,Viewmodel,Webview2,亲爱的网上大学 我想在我的应用程序中使用WebView2,但我想在viewmodel文件中使用RestrictDomain,该文件通常在view.xaml.cs文件中定义。这是否可能以某种方式将其绑定成某种形状或形式?代码看起来也不像: Xaml: viewmodel中的webView2Name当然没有被重新定义,因此这只是另一个问题之上的另一个问题。(weblink设置在其他地方) 如果有人能找到或知道任何解决办法,那将是非常受欢迎的 格雷廷斯, 是me Jessi是的,您可以将WebView

亲爱的网上大学

我想在我的应用程序中使用WebView2,但我想在viewmodel文件中使用RestrictDomain,该文件通常在view.xaml.cs文件中定义。这是否可能以某种方式将其绑定成某种形状或形式?代码看起来也不像:

Xaml:

viewmodel中的webView2Name当然没有被重新定义,因此这只是另一个问题之上的另一个问题。(weblink设置在其他地方)

如果有人能找到或知道任何解决办法,那将是非常受欢迎的

格雷廷斯,
是me Jessi

是的,您可以将WebView2.Source绑定到您的ViewModel,并且应该可以将导航事件绑定到您的ViewModel。 源应绑定到Uri类型(而不是字符串)

如果要将视图中的属性/事件绑定到视图模型,则必须在视图/xaml中定义datacontext;类似这样的情况(假设您的命名空间为“YourNameSpace”,而viewmodel类为“viewmodel”):

您在XAML中的绑定现在应该是:

Source="{Binding WebUri}"
最后一件事是将NavigationStarting事件连接到视图模型。我以前也做过,但很难做到,最后我使用了交互触发器。这是可行的,但也许有更好的解决办法。我用于webview事件的交互触发器是“NavigationCompleted”;因此,也许您也可以使用它,并将NavigationCompleted替换为NavigationStarting

    <wv2:WebView2 Name="webView" Grid.Column="1" Source="{Binding WebUri}">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="NavigationCompleted">
                <cmd:EventToCommand Command="{Binding Mode=OneWay, Path=WebViewNavigationCompleted}" 
                                    PassEventArgsToCommand="True"/>
            </i:EventTrigger>
                           
        </i:Interaction.Triggers>
    </wv2:WebView2>

我希望这能进一步帮助你。祝您好运。

是的,您可以将WebView2.Source绑定到您的ViewModel,并且应该可以将导航事件绑定到您的ViewModel。 源应绑定到Uri类型(而不是字符串)

如果要将视图中的属性/事件绑定到视图模型,则必须在视图/xaml中定义datacontext;类似这样的情况(假设您的命名空间为“YourNameSpace”,而viewmodel类为“viewmodel”):

您在XAML中的绑定现在应该是:

Source="{Binding WebUri}"
最后一件事是将NavigationStarting事件连接到视图模型。我以前也做过,但很难做到,最后我使用了交互触发器。这是可行的,但也许有更好的解决办法。我用于webview事件的交互触发器是“NavigationCompleted”;因此,也许您也可以使用它,并将NavigationCompleted替换为NavigationStarting

    <wv2:WebView2 Name="webView" Grid.Column="1" Source="{Binding WebUri}">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="NavigationCompleted">
                <cmd:EventToCommand Command="{Binding Mode=OneWay, Path=WebViewNavigationCompleted}" 
                                    PassEventArgsToCommand="True"/>
            </i:EventTrigger>
                           
        </i:Interaction.Triggers>
    </wv2:WebView2>
我希望这能进一步帮助你。祝你好运

Source="{Binding WebUri}"
    <wv2:WebView2 Name="webView" Grid.Column="1" Source="{Binding WebUri}">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="NavigationCompleted">
                <cmd:EventToCommand Command="{Binding Mode=OneWay, Path=WebViewNavigationCompleted}" 
                                    PassEventArgsToCommand="True"/>
            </i:EventTrigger>
                           
        </i:Interaction.Triggers>
    </wv2:WebView2>
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"