我试图从下面的类中带来静态变量的值
public class LoginUserId
{
public static int id { get; set; }
public static string username { get; set; }
}
从这里我创建了另一个类来获取值如下
public class UsersList
{
public static List<LoginUserId> Names { get; set; }
}
现在我有xaml页面
<ListView ItemSelected="LoginUserList_OnItemSelected" ItemsSource="{Binding Source={x:Static lacal:UsersList.Names}}" IsVisible="True" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Text="{Binding username}" TextColor="Black" FontSize="20" IsVisible="True"></Label>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
在输出iam没有得到任何东西只是出现空白页面,请纠正我在哪里出错。
答案 0 :(得分:1)
您不能像在XAML中那样绑定到静态变量。当您使用Text="{Binding username}"
时,如果要绑定到静态属性,则属性必须是非静态属性public string username { get; set; }
,那么您必须使用x:Static
方式。
<Label Text="{x:Static local:YourViewModel.username}" />
当然,您必须将viewModel的命名空间添加到ContentPage
答案 1 :(得分:0)
修改您的代码,如下所示
public class LoginUserId
{
public int id { get; set; }
public string username { get; set; }
}
public class UsersList
{
public static List<LoginUserId> Names = new List<LoginUserId>() {
new LoginUserId{id = 1, username = "No1"},
new LoginUserId{id = 2, username = "No2"},
};
}
列表名称必须是静态的,但其中对象的属性不应该是静态的,因为我们必须初始化模型的变量并为属性赋值,它不稳定。