簡體   English   中英

在Windows Phone中更新綁定/靜態資源

[英]Update binding/staticresource in Windows Phone

在我的xaml代碼中,我將類“ Feed”添加到了資源中。 像這樣:

<Page.Resources>
    <data:Feed x:Key="Feed"></data:Feed>
</Page.Resources>

該類包含屬性Apod和一個稍后更新該屬性的方法。

private ApodModel _apod;
public ApodModel Apod
{
    get { return _apod; }
    set { _apod = value; }
}
public Feed()
{
    DownloadApod();
}
private async void DownloadApod()
{
    try
    {
        using (HttpClient client = new HttpClient())
        {
            HttpResponseMessage response = await client.GetAsync(new Uri("http://spacehub.azurewebsites.net/api/apod", UriKind.Absolute));
            if (response.IsSuccessStatusCode)
            {
                string json = await response.Content.ReadAsStringAsync();
                Apod = JsonConvert.DeserializeObject<ApodModel>(json);
                var apod = new AppSettings<ApodModel>();
                await apod.SaveAsync("Apod", Apod);
            }
        }
    }
    catch (Exception)
    {
    }
}

在我的XAML中,我對屬性的綁定如下所示:

<StackPanel DataContext="{StaticResource Feed}">
    <TextBlock Text="{Binding Apod.Description}">
</StackPanel>

當我調試屬性Apod時,它會更新,但在XAML中不會更改。 我究竟做錯了什么?

當“ Apod”屬性更改時,您需要通知視圖(否則,它將首先讀取屬性值作為其默認值null ,而不再讀取該值)。 為此,讓您的“ Feed”類實現INotifyPropertyChanged ,並在“ Apod”屬性設置器中引發PropertyChanged事件。

您需要使用INotifyPropertyChange實現類

和他們實現接口。

private ApodModel _apod;
public ApodModel Apod
{
    get { return _apod; }
    set { _apod = value; 
          NotifyPropertyChange("Apod");
        }
}

public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChange(string name)
{
    if(PropertyChanged!=null)
    {
        PropertyChanged(this,new PropertyChangedEventArgs(name));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM