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