Obtuve una aplicación mvvm de muestra. La interfaz de usuario tiene un cuadro de texto, un botón y un cuadro combinado. cuando ingreso algo en el cuadro de texto y presiono el botón, el texto que ingreso se agrega a una colección observable. El Combobox está vinculado a esa colección. ¿Cómo obtengo el combobox para mostrar automáticamente la nueva cadena agregada?WPF - Contenido del cuadro combinado de actualización automática
Respuesta
Como tengo entendido, desea agregar un elemento y seleccionarlo. Este es el ejemplo de cómo se puede hacer usando ViewModel y enlaces.
Xaml:
<StackPanel>
<TextBox Text="{Binding ItemToAdd}"/>
<ComboBox ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" />
<Button Content="Add" Click="Button_Click"/>
</StackPanel>
ViewModel:
public class MainViewModel:INotifyPropertyChanged
{
public ObservableCollection<string> Items { get; set; }
public string ItemToAdd { get; set; }
private string selectedItem;
public string SelectedItem
{
get { return selectedItem; }
set
{
selectedItem = value;
OnPropertyChanged("SelectedItem");
}
}
public void AddNewItem()
{
this.Items.Add(this.ItemToAdd);
this.SelectedItem = this.ItemToAdd;
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
El MainViewModel
tiene 3 propiedades (uno para el TextBox
y otros dos para el ComboBox
) y el método AddNewItem
sin parámetros.
El método puede ser disparado desde un comando, pero no hay ninguna clase estándar para los comandos, por lo que llamaremos a partir del código subyacente:
((MainViewModel)this.DataContext).AddNewItem();
Así debe establecer explícitamente un elemento añadido a elección después de agregarlo a una colección.
Porque el método OnItemsChanged
de la clase ComboBox
está protegido y no se puede utilizar.
Si el ComboBox está vinculado a un ObservableCollection, el ComboBox se actualizará tan pronto como se cambie la colección.
Esa es la ventaja de utilizar un ObservableCollection; no es necesario que realice ninguna codificación adicional para actualizar la interfaz de usuario.
Si este no es el comportamiento que está viendo, quizás pueda publicar algún código/xaml.
- 1. Aspecto del cuadro combinado
- 2. Eventos del cuadro combinado VB6
- 3. Texto del cuadro combinado al escribir
- 4. WPF valor de cuadro combinado y visualización de texto
- 5. cuadro combinado de la unión a otro cuadro combinado en WPF
- 6. Actualización automática de la aplicación WPF
- 7. WPF - añadir elementos estáticos a un cuadro combinado
- 8. Encuadernación del cuadro combinado WPF y mostrar su valor en el cuadro de texto
- 9. combinado cuadro de autocompletar
- 10. Actualización automática
- 11. WPF DataBinding: cambio de propiedad cancelado: cuadro combinado no coincide
- 12. WPF - Actualización del contenido de la etiqueta durante el procesamiento
- 13. Lista desplegable de cuadro combinado
- 14. WPF: desplegable de un cuadro combinado highlightes el texto
- 15. WPF cuadro combinado de la unión a cadena
- 16. Obtener el texto seleccionado de un cuadro combinado usando jQuery, por nombre del cuadro combinado?
- 17. WPF: Enlace DisplayMemberPath en un cuadro combinado al elemento
- 18. Agregar enum al cuadro combinado
- 19. ¿Mejor cuadro combinado de Javascript?
- 20. cursor escribir de cuadro combinado
- 21. Cambiar los colores del borde de un cuadro combinado de WPF
- 22. Actualización automática del programa y Windows 7
- 23. Cómo cambiar cuadro combinado determinado color del artículo de forma dinámica en WPF
- 24. Actualización de rendimiento: mejor velocidad de cuadro en WPF
- 25. Comportamiento extraño del control de cuadro combinado de Windows Forms
- 26. caso cuadro combinado desplegable sensibles
- 27. cheque nocaut/desmarcar todos cuadro combinado
- 28. Actualización automática de programas C#
- 29. Cómo anular la selección del texto de un cuadro combinado
- 30. Evento de celda del cuadro combinado DataGridView en C#