У меня проблема с нубом.Как видно из названия, у меня проблема с наблюдаемой коллекцией.Я пытаюсь заполнить коллекцию, передав значение через TextBox, а затем добавив его в наблюдаемую коллекцию.Когда я нажимаю кнопку « Добавить Ciudad », появляется текстовое поле для вставки нового значения и кнопка для его сохранения.Значение успешно попадает в метод, отвечающий за это (" Добавить город ввода "), но пользовательский интерфейс никогда не показывает новый элемент.Кстати, первое добавленное вручную значение в « Load Ciudades » отображается правильно.
Я видел несколько связанных вопросов, но все же не смог решить проблему.
Я подозреваю, что неправильно добавляю предметы.Для большего количества проблем я полностью нуб с C #: D.Вот код, по которому можно судить:
Модель городов:
public class Ciudad : INotifyPropertyChanged
{
private string nombre;
public String Nombre
{
get { return nombre; }
set {
nombre = value;
RaisePropertyChanged("Nombre");
RaisePropertyChanged("Ciudades"); //Dunno if this one is necesary.
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}
Модель вида городов:
public ObservableCollection<Ciudad> Ciudades { get; } = new ObservableCollection<Ciudad>();
public void LoadCiudades()
{
Ciudades.Add(new Ciudad { Nombre = "Random city" });
}
public void AddInputCity(string new_city)
{
Ciudades.Add(new Ciudad { Nombre = new_city });
}
Просмотр городов:
<Grid>
<DataGrid ItemsSource = "{ Binding Path = Ciudades, UpdateSourceTrigger=PropertyChanged }" Name="DGrid">
</DataGrid>
<Button Click="Button_Click" Height="30" Width="150" Margin="0,250,0,0">Add Ciudad</Button></Grid>
Просмотр городов cs
TextBox iTextBox;
public CiudadesView()
{
InitializeComponent();
}
private void Add_Input_Text()
{
TextBox iText = new TextBox
{
Name = "iText",
Width = 250,
Margin = new Thickness(100)
};
Button saveBtn = new Button()
{
Content = "Save"
};
saveBtn.Click += new RoutedEventHandler(Button_Save_Click);
sPanel.Children.Add(iText);
sPanel.Children.Add(saveBtn);
iTextBox = iText;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Add_Input_Text();
}
private void Button_Save_Click(object sender, RoutedEventArgs e)
{
string ciudadNuevoNombre = iTextBox.Text;
CiudadesViewModel viewModel = new CiudadesViewModel();
viewModel.AddInputCity(ciudadNuevoNombre);
}
Есть идеи или предложения?Спасибо вам всем!:)