gpt4 book ai didi

Xamarin.Forms MVVM WebView 未加载

转载 作者:行者123 更新时间:2023-12-03 10:19:18 24 4
gpt4 key购买 nike

我们使用 Xamarin.Forms WebView 显示某个对象的内容,但是直到我们旋转设备两次后,该内容才会显示在 WebView 中。

.xmal-文件代码:

<WebView x:Name="WebView" HeightRequest="{Binding Height}" WidthRequest="{Binding Width}">
<WebView.Source>
<HtmlWebViewSource Html="{Binding Code}"/>
</WebView.Source>
</WebView>

和模型 View :

    private double _height;
private double _width;
public ICommand ItemTappedCommand { get; private set; }
public string SearchBarLabelText { get; private set; }
public object LastTappedItem { get; set; }
public int ColumnCount { get; private set; } = 2;

public string CodeName { get; private set; }
public string CodeContent { get; private set; }

public string Code { get; private set; }

public double Height
{
get => _height;
private set
{
if (_height == value)
return;
_height = value;
OnPropertyChanged(nameof(Height));
}
}

public double Width
{
get => _width;
private set
{
if (_width == value)
return;
_width = value;
OnPropertyChanged(nameof(Width));
}
}

public ErrorcodeDetailPageViewModel(Errorcode code)
{
Device.Info.PropertyChanged += DevicePropertyChanged;
DevicePropertyChanged(null, null);

Code = code.Content;
CodeName = code.Label;
CodeContent = code.Content;


}

private void DevicePropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (Device.Info.CurrentOrientation)
{
case DeviceOrientation.Portrait:
Height = Device.Info.PixelScreenSize.Height - 150; // 120 is the Height of the ControlTemplate used on this Page + the top row on uwp; only required in portrait mode
Width = Device.Info.PixelScreenSize.Width;
break;

case DeviceOrientation.Landscape:
Height = Device.Info.PixelScreenSize.Height - 50;
Width = Device.Info.PixelScreenSize.Width;
break;
}
}

public event PropertyChangedEventHandler PropertyChanged;

[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

因此,如前所述,如果我们将设备旋转两次,内容就会显示,否则不会。我认为问题与我们的绑定(bind)有关...

我应该提一下,我们在 WebView 顶部有某种 ob 横幅/标题。

最佳答案

代码 还应该有一个支持通知,以便 View 知道它的值何时发生变化。

喜欢

private string code;

public string Code {
get => code;
private set {
if (code == value)
return;
code = value;
OnPropertyChanged(nameof(Code));
}
}

如果您完成了为什么必须转两次的步骤,您就会明白这就是您必须这样做的原因。

第一次设置该值时,它是空白的。

在第一轮,该值由事件处理程序设置,因为没有通知发送到 View ,所以它没有明显改变。

在第二轮时,该值已设置,当 View 重绘时,该值显示在 View 中。

关于Xamarin.Forms MVVM WebView 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48356242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com