-1
我無法在屏幕上顯示新數據。Xamarin.Forms綁定不起作用
C#代碼
public partial class MainPage : ContentPage {
public class PhaseDetails {
public List<string> Chats {
get; set;
}
}
public new PhaseDetails BindingContext => (PhaseDetails) base.BindingContext;
public MainPage() {
InitializeComponent();
base.BindingContext = new PhaseDetails {
Chats = new List<string>(new string[] { "qwe" }),
};
Task.Run(() => new List<string>(new string[] { "1", "2", "3" })).ContinueWith((task) => Device.BeginInvokeOnMainThread(() => {
BindingContext.Chats = task.Result;
OnPropertyChanged(null);
}));
}
}
XAML
<StackLayout>
<ListView ItemsSource="{Binding Chats}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Padding="6" BackgroundColor="Aquamarine">
<Label Text="Service Area"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
預期:在列表視圖中三行。 但它只顯示一個。 可能是什麼問題?
如果'task.Result'具有任何值,則問題是,你不會從變化通知視圖('OnPropertyChanged(NULL);')。你應該做'OnPropertyChanged(「聊天」);' –
PhaseDetails不實現INPC。而且你似乎沒有從正確的上下文中調用PropertyChanged - 它通常在setter中。 – Jason