【发布时间】:2021-06-22 17:48:16
【问题描述】:
我的问题是我有一个 Location 类,LocationsDb 类,在 LocationsDb 中我有一个包含硬编码数据的公共列表。现在我在尝试绑定来自 LocationsDb 类中的 List 的数据时遇到了 ViewModel 类的问题。我希望我的 Listview 只显示城市。我的代码有什么问题?
位置类
public class Location
{
public string city { get; set; }
public string street { get; set; }
public int emptySpaces { get; set; }
public Location(string city, string street, int emptySpaces)
{
this.city = city;
this.street = street;
this.emptySpaces = emptySpaces;
}
}
LocationsDb 类
public class LocationsDb
{
public List<Location> Locations = new List<Location>
{
new Location("Vilnius", "Ateities g. 91", 5),
new Location("Vilnius", "S. Nėries g. 91", 10),
new Location("Vilnius", "Lukiškių g. 6", 1),
new Location("Vilnius", "Dominikonų g. 4", 0),
new Location("Kaunas", "Jonavos g. 1", 8),
new Location("Kaunas", "Vytauto pr. 24", 3),
new Location("Kaunas", "Žemaičių g. 31B", 0),
new Location("Kaunas", "Ateities g. 91", 5),
new Location("Klaipėda", "Smiltelės g. 2A", 13),
new Location("Klaipėda", "Žvejų g. 27", 7),
new Location("Klaipėda", "Minijos g. 90", 0),
new Location("Klaipėda", "Bangų g. 5", 0),
};
public List<Location> GetLocations()
{
return this.Locations;
}
}
ViewModel 类
public class MainPageViewModel
{
public ObservableCollection<Location> AllCities { get; set; }
public ObservableCollection<Location> allCities { get { return AllCities; } }
public MainPageViewModel()
{
AllCities = new ObservableCollection<Location>(new LocationsDb().Locations);
}
}
Xaml
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="ParkingApp.Views.MainPage"
ControlTemplate="{StaticResource MyTemplate}"
>
<ContentPage.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Text="Select City"
BackgroundColor="#e8e8e8" HorizontalTextAlignment="Center"
HeightRequest="50" VerticalTextAlignment="Center"
FontSize="30"/>
<ListView x:Name="CitiesListview" Grid.Row="1" ItemsSource="{Binding AllCities}" SeparatorColor="Black">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell TextColor="Black" Text="{Binding city}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ContentPage.Content>
【问题讨论】:
-
请不要将代码或错误作为图片发布
-
抱歉,第一次来,以后不会再来了:)
-
您在哪里为您的页面分配 BindingContext?我可以看到你的代码看起来不错。您还没有真正描述您遇到的具体问题是什么。 “我的 ViewModel 类有问题”不是很具有描述性
-
我正在尝试解决如何在我的列表视图中仅显示城市,但我不明白我做错了什么,因为在调试时我可以看到我的 ObservableCollection 从 LocationDb 列表中获取所有对象但是它没有在屏幕上显示任何数据绑定。哦,我忘记粘贴了,但是 MainPage.cs 上有 BindingContext = new MainPageViewModel()
-
尝试为您的 ListView 分配高度,或者使用 StackLayout 而不是 Grid
标签: listview xamarin mvvm binding