这种简单的做法很好用
如果我使用的WebView,放IsPrivateNetworkClientServerCapabilityEnabled至true,并加载一个本地网的网站,它会正常加载。
<WPF:WebView Source="http://localnetworkwebsite"
NavigationStarting="Wvc_NavigationStarting"
NavigationCompleted="Wvc_NavigationCompleted"
IsPrivateNetworkClientServerCapabilityEnabled="True" />
这种做法是行不通的
在我的应用程序中,我想同时管理多个网页(如独立浏览器上的选项卡),所以我使用 anItemControl来实例化我需要的 WebView 计数(这个数字并不总是相同)。
<ItemsControl x:Name="ItemsWebview" ItemsSource="{Binding WebviewsDataSource}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid></Grid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<!--Item-->
<WPF:WebView Visibility="{Binding Visibility}" Source="{Binding Source}"
NavigationStarting="Wvc_NavigationStarting"
NavigationCompleted="Wvc_NavigationCompleted"
IsPrivateNetworkClientServerCapabilityEnabled="True" />
<!--End Item-->
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
然后,我更改了Sourceths WebView,并使用 ViewModel 隐藏/使它们可见:
public class WebviewViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public Guid LinkedId { get; set; }
private System.Windows.Visibility _visibility;
public Visibility Visibility
{
get
{
return _visibility;
}
set
{
_visibility = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Visibility)));
}
}
整个事情似乎有效,但仅适用于外部网站,不适用于本地网站。404 NotFound使用这种方式创建 WebView 时,我总是得到本地网络站点的一个,就好像IsPrivateNetworkClientServerCapabilityEnabled被忽略了一样。但是本地站点使用简单的方法。
我在创建后检查了WebViews的状态,IsPrivateNetworkClientServerCapabilityEnabled值仍然是true.
所以...
由于此控件相对较新,因此对我来说这看起来像是一个错误...但是我做错了什么吗?
相关分类