2017-08-24 31 views
0

蔭試圖從下面的類綁定其他類的靜態變量的ListView

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沒有得到任何東西只是一個空白頁是appeari恩,請糾正我出錯的地方。

+0

是你在本地商店中的列表嗎?你爲什麼不使用ViewModel綁定? –

回答

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

列表名稱必須是靜態的,但財產其中的對象不應該是靜態的,因爲我們必須初始化模型的變量併爲屬性賦值,但它並不穩定。

+0

謝謝@ Cole Xia的幫助,但是這裏的用戶名動態地顯示出來。我必須改變這個以獲得我的要求。 – sahithi

+0

@sahithi爲什麼用戶名必須是靜態的? –

+0

,我實際上有登錄表單,所以登錄其名稱的用戶來到這個靜態變量,如果它不是靜態的,我沒有獲取數據,因此將靜態放置在那裏。 – sahithi

1

您無法以您在XAML中執行的方式綁定到靜態變量。當你使用Text="{Binding username}"你的財產必須是非靜態的財產public string username { get; set; }如果你想綁定到你的靜態屬性,那麼你必須使用x:Static的方式。

<Label Text="{x:Static local:YourViewModel.username}" /> 
當然

你有你的ViewModels的命名空間添加到ContentPage

+0

感謝您回覆@ Tomislav Eric,但是iam在這裏沒有使用viewmodel,是否需要有viewmodel,不能直接從「LoginUserId」類中獲取。 – sahithi