我正试图用C#/WPF做一个天气应用程序作为我的第一个项目。我真的迷路了,找不到我做错了什么。
这是我的变量字符串数组weatherWeek,我想用未来7天的温度来填充它。
private string[] _weatherWeek = new string[7];
public string[] weatherWeek
{
get
{
return _weatherWeek;
}
set
{
_weatherWeek = value;
OnPropertyChanged(nameof(weatherWeek));
}
}
这是我用来获取未来7天温度的代码。当我使用Debu.WriteLine(Weather[0]);
时,我可以看到数据在那里。
public async Task GetWeatherTempWeek()
{
for (int i = 0; i < 7; i++)
{
JObject jObjectWeek = JObject.Parse(jsonDataWeek);
weatherWeek[i] = (string)jObjectWeek["days"][i]["temp"] + "°C";
}
}
这里是我绑定weatherWeek变量的XAML代码的一部分。
<TextBlock Text="{Binding weatherWeek[0], UpdateSourceTrigger=PropertyChanged}"
Height="68"
Width="68"
FontSize="30"
FontWeight="Bold"
FontFamily="Tunga"
TextAlignment="Center"/>
老实说,我甚至不记得我试过的所有东西。问题是它对普通变量有效,但对数组变量无效。
2条答案
按热度按时间pbpqsu0x1#
您没有调用负责通知UI的
OnPropertyChanged(nameof(weatherWeek));
,作为一种变通方案,您可以在进行更改后简单地调用它dfty9e192#
若要通知集合更改,集合必须实现INotifyCollectionChanged接口。在常规数组中,不实现此接口。
这些解决方案中很可能有一个适合您。
1)更换整个阵列。
2)如果需要在集合中使用逐个元素替换函数,则应将数组更改为ObservableCollection
x一个一个一个一个x一个一个二个x