我將呼叫的 ObservableCollection 系結Messages到 Xamarin 表單中的 ListView。我按如下方式填充集合:
for (int i=0; i<5; i ) {
Messages.Insert(0,
new Message() {
Text = "M" i
});
}
這在 Android 下按預期作業,我的 ListView 顯示 5 個帶有 texts 的訊息'M0',..,'M4'。但是,在 iOS 下,我會收到 5 條訊息,但每條訊息都顯示 text 'M4'。
當我在除錯器中進行此操作時,它會顯示每條訊息的正確文本('M0',..,'M4')。所以資料是正確的,但是ListView顯示的是每條訊息中最后一條訊息的文本,而不是正確的文本。
不知道這里發生了什么。有什么想法/解決方法嗎?
謝謝!
編輯:請參閱下面我自己的答案/解決方案。
uj5u.com熱心網友回復:
1.根據你的代碼我寫了一個在iOS上可以正確顯示的例子供你參考:
這是xaml代碼:
<StackLayout>
<ListView x:Name="mylist">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding Text}"></Label>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
下面是后臺代碼:
public partial class MainPage : ContentPage
{
ObservableCollection<Message> observableCollection { get; set; } = new ObservableCollection<Message>();
public MainPage()
{
InitializeComponent();
for (int i = 0; i < 5; i )
{
observableCollection.Insert(0, new Message() {Text = "m" i });
}
mylist.ItemsSource = observableCollection;
}
}
2.根據你的代碼,你每次插入的索引位置都是0,所以結果的顯示應該是m3,m2,m1,m0。
uj5u.com熱心網友回復:
事實證明,我使用的 ListView 擴展有一個導致問題的 iOS 自定義渲染器。一旦我切換到 Xamain 的開箱即用 ListView,問題就消失了。
故事的士氣,使用控制元件擴展時要小心。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/411959.html
標籤:
