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.

¿Cómo puedo llamar a una función desde otra función con RoutedEventArgs en C#?

Estoy intentando llenar un DataGrid llamando a una función con el evento RoutedEventArgs. Hasta ahora funciona, pero esperaba reutilizar la función en un evento SelectionChanged de un TabControl, pero cuando hago referencia a la función anterior, obtengo una NullReferenceException. Creo que el evento ya fue manejado antes en el evento del TabControl, por lo que estoy atascado en este rompecabezas, ya que ¿cómo podría aprovechar el evento anterior? Aquí están las funciones:

“`c#
private void BtnMostrar(object sender, RoutedEventArgs e)
{
ObservableCollection<eventorubrica> cltEvtRubrica =
new ObservableCollection<eventorubrica>();

<pre><code>using (var db = new EventoRubricaContext())
{
var evts = db.EventoRubricas;
foreach (var evt in evts)
{
cltEvtRubrica.Add(evt);
}
}

evtDataGrid.ItemsSource = cltEvtRubrica;
</code></pre>

}

private void tbCtrl_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
BtnMostrar(sender, e);
}
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la NullReferenceException que estás encontrando se debe a que el objeto evtDataGrid es null cuando se llama a la función BtnMostrar() desde el evento tbCtrl_SelectionChanged(). Esto se debe a que el objeto evtDataGrid puede que aún no esté inicializado en el momento en que se activa el evento tbCtrl_SelectionChanged().

    Para resolver este problema, puedes agregar una comprobación de null al objeto evtDataGrid antes de establecer su propiedad ItemsSource. Aquí tienes una versión actualizada de la función BtnMostrar():

    “`c#
    private void BtnMostrar(object sender, RoutedEventArgs e)
    {
    ObservableCollection cltEvtRubrica = new ObservableCollection();

    using (var db = new EventoRubricaContext())
    {
        var evts = db.EventoRubricas;
        foreach(var evt in evts)
        {
            cltEvtRubrica.Add(evt);
        }
    }
    
    if (evtDataGrid != null)
    {
        evtDataGrid.ItemsSource = cltEvtRubrica;
    }
    

    }
    “`

    Con esta comprobación en su lugar, la función BtnMostrar() debería poder manejar tanto el evento RoutedEventArgs como el evento SelectionChangedEventArgs sin encontrar la NullReferenceException.

Comments are closed.