添加列表框项目不适用于xamarin表单

时间:2018-01-29 22:57:46

标签: c# wpf xaml uwp listbox

在xamarin表单开发中,向列表框添加项目效果不佳。

MainPage.xaml中

  <ListBox  x:Name="vrlist_panel">
        <ListBox.ItemContainerStyle>
            ....
        </ListBox.ItemContainerStyle>

        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid Margin="0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="1*"></ColumnDefinition>
                        <ColumnDefinition Width="1*"></ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="1*"></RowDefinition>
                    </Grid.RowDefinitions>

                    <Border Grid.Column="0" Grid.Row="0">
                        <Image Source="{Binding leftImg}" Height="100" Margin="14,2,13,20"></Image>
                    </Border>
                    <Border Grid.Column="1" Grid.Row="0">
                        <Image Source="{Binding rightImg}" Height="100" Margin="14,2,13,20"></Image>
                    </Border>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>

  </ListBox>

MainPage.xaml.cs中

public class VRDataModel
{
    public string leftImg { get; set; }

    public string rightImg { get; set; }
}


public partitial class MainPage : Page , 
                                    Autodesk.Revit.UI.IDockablePaneProvider
{
         ....
     private static ObservableCollection<VRDataModel> vrImgs = new 
                                       ObservableCollection<VRDataModel>();
         ....
}


    ...
vrlist_panel.ItemsSource = vrImgs;
    ...

这是完整的代码。 但即使vrImgs是有效值,vrlist_panel.ItemsSource的值在运行时也是null,它会导致异常。 我一直试图解决这个问题好几天但是找不到原因。 我该怎么办?

1 个答案:

答案 0 :(得分:1)

您的示例不完整但如果您在尝试设置NullReferenceException属性时收到ItemsSource,则可能在设置属性之前未调用InitializeComponent()方法:

public partial class MainPage : Page
{
    public MainPage()
    {
        InitializeComponent();
        ...
        vrlist_panel.ItemsSource = vrImgs;
    }
}