es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obteniendo datos de una Lista en el ComboBox de un DataGrid.

Estoy teniendo problemas para obtener elementos de una lista a una columna de combobox en un datagrid en WPF. Esto es nuevo para mí, así que agradecería cualquier ayuda. Parece que hay muchas formas de hacerlo, pero no he sido capaz de hacer que ninguna de ellas funcione.

”’

            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Positionname}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>

            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <ComboBox x:Name="poscombo" Loaded="comboposloaded"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>

        </DataGridTemplateColumn>

Lista con datos en el código detrás

List PositionList = new List();

ACTUALIZACIÓN:
Terminé agregando un evento de carga para obtener la lista como ítem origen. La pregunta ahora es cómo obtener el valor seleccionado del combobox de vuelta en el bloque de texto?

C# agregado para obtener combo cargado.

private void comboposloaded(object sender, RoutedEventArgs e)
{
    ComboBox cmb = (ComboBox)sender;
    cmb.ItemsSource = PositionList;
    cmb.DisplayMemberPath = "info";
    cmb.SelectedValuePath = "psnme";

}</datagridtemplatecolumn>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener el valor seleccionado del combobox de vuelta al bloque de texto, puede utilizar el evento SelectionChanged del combobox. En el manejador de eventos, puede establecer la propiedad Text del TextBlock en el SelectedValue del combobox.

    private void comboposselected(object sender, SelectionChangedEventArgs e)
    {
        ComboBox cmb = (ComboBox)sender;
        TextBlock txt = (TextBlock)cmb.Parent.FindName("PositionName");
        txt.Text = cmb.SelectedValue.ToString();
    }
    

Comments are closed.