2015-11-17 3 views
0

У меня есть ListView определено, как это:UWP - добавление элементов в ListView динамически вызвать сбой

<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;

И на какой-то кнопки мыши I хочу добавить новый элемент в списокView, поэтому я вызываю метод:

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

Но после нажатия кнопки, чтобы добавить элемент сбои приложения и App.g.i.cs называется и 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 

This is e parameter

Я действительно новичок в Универсальной Windows, приложения, и я читал, что это называется, когда что-то не так с кодом XAML. Не могли бы вы мне помочь? Благодарю.

+0

Нет другой информации об исключении, когда вы разрешаете ей сбой? Если вы положите 'e' на ** смотреть ** больше информации? Также из того, что я вижу в вашем XAML, нет кнопки AddPhone, удалите только – kirotab

+0

. Я добавил значение параметра. А AddPhone - обработчик для кнопки вне listView – miskohut

+1

Если честно, я не вижу никаких проблем в предоставленном коде. Таким образом, ошибка в другом месте, если вы предоставите больше кода, может быть, я или кто-то другой сможет вам помочь – kirotab

ответ

0

Я пытался использовать ItemsSource="{x:Bind Mode=TwoWay}"

Единственный путь (но не самый лучший, я думаю), где я мог бы динамически обновлять ListView делал метод, обрабатывать событие кнопки, где я добавить новый элемент (называя 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; 

} 

Это работает, но я думаю, что это не так.

Смежные вопросы