将静态变量从其他类绑定到listview

时间:2017-08-24 10:36:12

标签: xamarin xamarin.forms

我试图从下面的类中带来静态变量的值

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没有得到任何东西只是出现空白页面,请纠正我在哪里出错。

2 个答案:

答案 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"},
    };
}

列表名称必须是静态的,但其中对象的属性不应该是静态的,因为我们必须初始化模型的变量并为属性赋值,它不稳定。