繁体   English   中英

UWP-将项目添加到ListView动态导致崩溃

[英]UWP - adding items to ListView dynamically cause crash

我有一个这样定义的列表视图:

<ListView 
    x:Name="phonesListView" 
    Grid.Row="5"
    Background="Black"
    IsItemClickEnabled="True"
    Foreground="Gray"  >

    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid Width="auto" HorizontalAlignment="Stretch">
                <Grid.RowDefinitions>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>

                <Grid 
                        Grid.Row="0">
                    <Grid.ColumnDefinitions >
                        <ColumnDefinition Width="3*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <ComboBox 
                            Grid.Column="0"
                            VerticalAlignment="Center"
                            Background="Black"
                            Foreground="White">
                        <ComboBoxItem Content="Home" IsSelected="True"/>
                        <ComboBoxItem Content="{Binding Type}"/>
                        <ComboBoxItem Content="Office"/>
                        <ComboBoxItem Content="Fax"/>
                    </ComboBox>

                    <Button
                            Grid.Column="1"
                            Height="30"
                            Width="30"
                            Foreground="Black"
                            Margin="0, 5, 0, 5"
                            HorizontalAlignment="Center" Click="RemovePhone">
                        <Button.Background>
                            <ImageBrush Stretch="Fill" ImageSource="Assets/appbar.close.png" />
                        </Button.Background>
                    </Button>

                </Grid>

                <TextBox 
                    Grid.Row="1"
                    Background="White"
                    Foreground="Black"
                    FontSize="20"
                    InputScope="TelephoneNumber"
                    Text="{Binding Number}"/>

            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

我有一个private ObservableCollection<Phone> numbers = new ObservableCollection<Phone>();

在构造函数中,我称phonesListView.ItemSource = numbers;

然后在某些按钮上单击“我想将新项目添加到listView”,所以我调用一个方法:

private void AddPhone(object sender, RoutedEventArgs e) {
    Phone phone = new Phone("", Types.HOME);
    numbers.Add(phone);
}

但是在单击按钮添加项目后,应用程序崩溃并且App.gics被调用,并且global::System.Diagnostics.Debugger.Break(); 突出显示

#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
            UnhandledException += (sender, e) =>
            {
                if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
            };
#endif

这是e参数

我对Universal Windows App真的很陌生,而且我读到XAML代码出现问题时会调用它。 你能帮我吗? 谢谢。

我尝试使用ItemsSource="{x:Bind Mode=TwoWay}"

我可以动态更新列表视图的唯一方法(但不是最好的)是制作一种处理按钮事件的方法,在该方法中添加新元素(调用addmethod)并更新列表视图的ItemsSource属性。

private  void AnadeDoctorAppBarButton_Click(object sender, RoutedEventArgs e)
{

              Doctor A = new Doctor("Mapache", "dentista", "La calle", "La vida", "Lo que sea", "Direccion", "olos");

    ViewModel.AnadeDoctor = A;
    ListaDePrueba.ItemsSource = ViewModel.ColeccionDoctores;

}

它有效,但是我认为这不是真正的数据绑定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM