1
我正在開發Windows商店應用程序。C#商店應用程序:更新ListView
我
class User
{
public string Login { get; set; }
public string Name { get; set; }
public string Enabled { get; set; }
public User(string Login)
{
this.Login = Login;
this.Load();
}
async public Task Load()
{
HttpResponseMessage response = await App.http.GetAsync("https://example.com/user?login=" + Login);
var xml = XDocument.Parse(await response.Content.ReadAsStringAsync());
var user = (from entry in xml.Descendants("user")
select new
{
Name = (string)entry.Element("name"),
Enabled = (string)entry.Element("enabled")
}).First();
this.Name = user.Name;
this.Enabled = user.Enabled;
}
}
描述用戶和負荷的所有數據異步地從服務器。我也有MainPage.xaml中與後面的下面的代碼:
public sealed partial class MainPage : Mail.Common.LayoutAwarePage
{
ObservableCollection<User> Users = new ObservableCollection<User>();
public MainPage()
{
this.InitializeComponent();
itemListView.ItemsSource = Users;
}
private async void pageRoot_Loaded(object sender, RoutedEventArgs e)
{
HttpResponseMessage response = await App.http.GetAsync("https://example.com/listusers");
var xml = XDocument.Parse(await response.Content.ReadAsStringAsync());
foreach (var item in from entry in xml.Descendants("email")
select new
{
Login = (string)entry.Element("name")
})
{
Users.Add(new User(item.Login));
}
}
}
MainPage
有ListView
是diplays ObservableCollection<User> Users
。 (我有如下的DataTemplate:
<DataTemplate x:Key="UserTemplate">
<StackPanel Orientation="Horizontal" Width="470" Height="85">
<Border Height="40" Width="40" Margin="10,10,0,10" VerticalAlignment="Top">
<Image Source="/SampleImage.png" Stretch="UniformToFill"/>
</Border>
<StackPanel Orientation="Vertical" VerticalAlignment="Top" Margin="0,10,0,0">
<TextBlock Text="{Binding Login}" FontSize="20" FontWeight="Semilight"
Margin="10,0,0,0" Width="320" Height="26" TextTrimming="WordEllipsis"
HorizontalAlignment="Left" VerticalAlignment="Top"/>
<TextBlock Text="{Binding Name}"
Margin="10,2,0,0" Width="320" TextTrimming="WordEllipsis" TextWrapping="Wrap"
HorizontalAlignment="Left"/>
</StackPanel>
<TextBlock Text="{Binding Enabled}" FontSize="16" Margin="20,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
)。
不幸的是,我只看到列表中的初始數據(登錄)。在構造函數(name
,enabled
)中異步接收的所有其他數據在listview
(我確信它已正確加載)中未顯示。
如何讓ListView
顯示Users
集合中物體的實際狀態?或者我應該執行同步請求(如何?)
你'User'類必須實現'INotifyPropertyChanged'並適當提高屬性更改通知。 –
你能舉個例子嗎? – simon
@HighCore好的,這工作,謝謝!您可以將其作爲答案發布,我會將其標記爲解決方案。 – simon