2
我目前在XAML網頁視圖這裏的WebView數據綁定只更新一次
<StackLayout>
<WebView x:Name="PrimaryWebView" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<WebView.Source>
<HtmlWebViewSource Html="{Binding Path=ViewModel.HtmlSource}" />
</WebView.Source>
</WebView>
</StackLayout>
顯示在我的ViewModel我有
private String htmlSource = null;
public String HtmlSource
{
get
{
if (String.IsNullOrEmpty(htmlSource))
{
Device.BeginInvokeOnMainThread(async() =>
{
ScreenLoading();
var result = await contentController.Get(currentPage);
if (result != null)
{
HtmlSource = result.Content;
Heading = result.Name;
}
ScreenFinished();
});
// Returns empty while loading
return contentController.GetBlank();
}
// returns here once htmlSource is no longer empty
return htmlSource;
}
set
{
htmlSource = value;
RaisePropertyChanged(() => HtmlSource);
}
}
在我看來,我有這個來修復已知的bug
/// <summary>
/// FIX: Due to bug https://bugzilla.xamarin.com/show_bug.cgi?id=21699
/// </summary>
protected override void OnBindingContextChanged()
{
base.OnBindingContextChanged();
PrimaryWebView.Source.BindingContext = BindingContext;
}
第一頁加載
- 我ScreenLoading的工作原理是顯示加載屏幕
- 的GetBlank()的作品,並正確填寫web視圖(我曾經使用過虛擬數據填補了這一測試)
- ScreenFinished正常運行,並刪除加載屏幕。
- 問題:一旦正確返回,WebView不會隨新內容一起更新。
也許我這種做法都是錯誤的,我不知道,但事實ScreenLoading和ScreenFinished是所有工作正常,因爲他們改變了綁定屬性:屏幕上正確地更新,我想知道爲什麼HtmlSource不一樣。
另請注意,也正確更新的Heading屬性在完成時綁定並更新屏幕。這意味着它可能與WebView上的HtmlWebViewSource有關,可能只是在Windows Phone上,目前無法在Android上進行測試,因爲我的試用期已過期,只需等待發票付款,直到我可以爲營業執照。 – 2014-11-02 06:01:04