首页 文章

Xamarin Forms:ListView中与MVVM的数据绑定问题

提问于
浏览
0

view

viewmodel, model and code behind

你好社区,

需要帮助数据绑定识别XAML中ListView中的MVVM模式 . 我不知道为什么它不起作用 . 我在视图中看不到任何数据 . 我通过调试得到了这个例外 .

Xamarin.Forms.Xaml.XamlParseException:位置8:10 . 属性内容为null或不是IEnumerable

谢谢你的回答 .

XAML

<ViewCell>
        <StackLayout HorizontalOptions="FillAndExpand" Orientation="Horizontal">
         <StackLayout HorizontalOptions="Start" Orientation="Vertical">
               <Label Text="{Binding Name}" />
          </StackLayout>
          <StackLayout HorizontalOptions="End" Orientation="Vertical">
                <Label Text="{Binding Information}" />
           </StackLayout>
     </StackLayout>
</ViewCell>

Code

public partial class PartyStatusPage : ContentPage
{
    public PartyStatusPage()
    {
        InitializeComponent();            
    }

    protected override void OnAppearing()
    {
        base.OnAppearing();

        BindingContext = new PartyStatusPageViewModel();
    }
}

 public class PartyStatusPageViewModel
{
    public List<PartyStatus> ItemList;

    public PartyStatusPageViewModel()
    {
        ItemList = new List<PartyStatus>();
        ItemList.Add(new PartyStatus { Name = "Max", Information = "test" });
    }
}

 public class PartyStatus
{
    public string Name { get; set; }

    public string Information { get; set; }

    public bool State { get; set; }
}

2 回答

  • 0

    您的XAML中的DataTemplate是错误的 . 您需要指定 ViewCell explicit的视图 . 查看以下XAML:

    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <ViewCell.View>
                    <!-- Your template (StackLayout for example -->
                </ViewCell.View>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
    
  • 0

    例如XAML:

    <ListView x:Name="listView" ItemsSource="{Binding Readycontacts}" SelectedItem="{Binding SelectedItem}"  Margin="10,10,94.234,10">
            <ListView.View>
                <GridView>
                    <GridViewColumn    Width="130" Header="Name"
                        DisplayMemberBinding="{Binding Path=Name}" />
                    <GridViewColumn Width="180" Header="Adresse"
                        DisplayMemberBinding="{Binding Path=Addresse}" />
                    <GridViewColumn Width="130" Header="Telefonnummer"
                        DisplayMemberBinding="{Binding Path=Telefonnummer}" />
                    <GridViewColumn Width="130" Header="Mobil"
                        DisplayMemberBinding="{Binding Path=Mobil}" />
                </GridView>
            </ListView.View>
        </ListView>
    

    ViewModel(您需要在更改值后刷新var)

    [编辑]或您的视图将无法识别/显示任何内容[编辑]

    private string _name = "";
        public string Name
        {
            get
            {
                return _name;
            }
            set
            _name = value;
                RaisePropertyChanged("Name");
            }
        }
    

    RaisePropertyChanged(“名称”);
    将刷新你的绑定 .

相关问题