【发布时间】:2021-04-29 18:16:52
【问题描述】:
我在我的 xaml 页面中创建了ListView,我正在从它的 cs 页面在其上添加网格和按钮。当我在手机上运行它时,当我将listview 滚动到底部时,后面的代码再次自动运行并再次添加相同的listview。我希望这个DataTemplate 代码只为那些运行,当我向下滚动到listview 的底部时,它不应该再次执行。不知道为什么又执行了。
后面的代码
public List<AmanoraSlotsClass> AmanoraSlotsClassesList { get; set; }
public List<HadapsarSlots> HadapsarSlotClassesList { get; set; }
string SelectedLocation = null;
string SelectedDate = null;
Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
int OuterI = 0;
int innerJ = 0;
public ShowSlotsPage(string _Location, string _Date)
{
this.SelectedLocation = _Location;
this.SelectedDate = _Date;
SelectedDate = SelectedDate.Replace('/', '-');
if (SelectedLocation == "Amanora Town Park")
{
AmanoraSlotsClassesList = new List<AmanoraSlotsClass>();
}
else if (SelectedLocation == "Hadapsar Malwadi")
{
HadapsarSlotClassesList = new List<HadapsarSlots>();
}
else
{
return;
}
FetchData(SelectedLocation, SelectedDate);
InitializeComponent();
BindingContext = this;
//When i reach bottom of my listview this the control jumps to this and again adds same elements.
DataTemplate _dataTemplate = new DataTemplate(() =>
{
Grid _grid = new Grid();
_grid.RowSpacing = 50;
_grid.RowDefinitions.Add(new RowDefinition());
_grid.ColumnDefinitions.Add(new ColumnDefinition());
_grid.ColumnSpacing = 25;
if (SelectedLocation == "Amanora Town Park")
{
OuterI = AmanoraSlotsClassesList[0].GetType().GetProperties().Count();
}
for (int i = 0; i < OuterI - 1; i++)
{
if (SelectedLocation == "Amanora Town Park")
{
innerJ = AmanoraSlotsClassesList.Count();
}
for (int j = 0; j < innerJ; j++)
{
Button _but = new Button();
_but.FontSize = 10;
_but.Scale = 1;
_but.HeightRequest = 70;
if (SelectedLocation == "Amanora Town Park")
{
_but.Text = AmanoraSlotsClassesList[j].S1;
}
keyValuePairs.Add(_but.Id.ToString(), $"S{i + 1}");
// ColorDtermination(_but); //Changes color of button
Grid.SetRow(_but, j);
Grid.SetColumn(_but, i);
_grid.Children.Add(_but);
}
}
var viewCell_ = new ViewCell
{
View = _grid
};
return viewCell_;
}); ///*Till here code runs again when i scroll bottom of listview.*
_listView.ItemTemplate = _dataTemplate;
if(SelectedLocation == "Amanora Town Park")
{
_listView.ItemsSource = AmanoraSlotsClassesList;
}
}
-
listview 的 xaml 声明 -xaml declarion of listview
【问题讨论】:
标签: c# .net xaml xamarin xamarin.forms