Member 14672509 Ответов: 2

Как добавить элемент в listview из текстового поля.


Моя программа состоит в том, чтобы добавить 20 телефонных номеров к элементам управления ListView из текстового поля. Я пишу ниже код для добавления элементов в listview, но он не работает...

Неужели мой код ошибочен ??

дайте мне идеальный код для добавления элемента в listView..

Thnq заранее

Что я уже пробовал:

private void Add_PhoneNumber_Click(object sender, RoutedEventArgs e)
        {

            ListView_PhoneNumber.Items.Add(Textbox_PhoneNumber.Text);
            Textbox_PhoneNumber.Text = " ";
            Textbox_PhoneNumber.Focus();
        }

2 Ответов

Рейтинг:
1

Ashutosh Gpt

если вы хорошо помните из нашего последнего обсуждения в предыдущем вопросе, я дал вам программу, использующую MVVM, в которой вы также можете улучшить этот случай. OnInsert() будет горячим, когда вы нажмете на свою кнопку, чтобы добавить номер ph.

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <ListView Grid.Row="0" ItemsSource="{Binding ItemList}"></ListView>
        <StackPanel Grid.Row="1">
            <TextBox BorderThickness="1" HorizontalAlignment="Left" Width="200" Text="{Binding InputPhnText, Mode=TwoWay}"/>
            <Button HorizontalAlignment="Right" Width="100" Command="{Binding InsertCommand}" Content="Add New Items"/>
        </StackPanel>
    </Grid>


public MainWindow()
      {
          InitializeComponent();
          DataContext = new MainViewModel();
      }



public class MainViewModel : INotifyPropertyChanged
    {
        public MainViewModel()
        {
            ItemList = new ObservableCollection<string>() { "9999999999" } ;
            InsertCommand = new RelayCommand(OnInsert);
        }

        private void OnInsert(object obj)
        {
// when you click on button this will hit on your view model and add the phn number.
            if (!string.IsNullOrEmpty(InputPhnText))
            {
                ItemList.Add(InputPhnText);
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        public ICommand InsertCommand { get; set; }

        public string InputPhnText{ get; set; }


        public void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        public ObservableCollection<string> ItemList { get; set; }

    }

    public class RelayCommand : ICommand
    {
        private Action<object> execute;
        private Func<object, bool> canExecute;

        public event EventHandler CanExecuteChanged
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }

        public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null)
        {
            this.execute = execute;
            this.canExecute = canExecute;
        }

        public bool CanExecute(object parameter)
        {
            return this.canExecute == null || this.canExecute(parameter);
        }

        public void Execute(object parameter)
        {
            this.execute(parameter);
        }
    }


Рейтинг:
1

RickZeeland

Вы можете использовать Элементы listviewitem, смотрите пример здесь: c# - добавление элементов в столбцы в представлении списка WPF - переполнение стека[^]
Но это не рекомендуемый способ WPF, см. ответы здесь: c# - добавить программно ListViewItem в Listview в WPF - переполнение стека[^]