Método de llamada desde otro problema de ventana (Clase)

En el código detrás del archivo de la ventana principal de la aplicación WPF tengo un método para buscar una base de datos con LINQ to SQL y escribir los resultados en un ObservableCollection:

    public void GetStateByDate(string shcode)
    {
        MydbDataContext contextSts = new MydbDataContext();
        _ShAvaQuCollection.Clear();

        var sts = from p in contextSts.SAties where p.ShID == shcode select p;

        foreach (var p in sts)
            _ShAvaQuCollection.Add(new ShAvaQu
            {
                ShCode = p.ShID,
                SiID = p.SiID,
                PrCat = p.PrCat
            });
    }

Cuando llamo a este método desde el mismo código detrás del archivo (la misma ventana), todo está bien.

Si llamo a este método desde otra ventana, utilizando un instante de la ventana principal, ObservableCollection permanece vacío .:

SWindow sw = new SWindow();
sw.GetStateByDate(stringpar);

¿Cuál es la razón para esto? ¿Crea este método de caso otra instancia de ObservableCollection?

(Puedo ver en el depurador quesw._ShAvaQuCollection contiene valores. Essw._ShAvaQuCollection No es el mismo instanse de colección que_ShAvaQuCollection? Si es así, ¿cómo se puede resolver?

Editado (añadido)

El ObservableCollection declaró de esta manera:

    ObservableCollection<ShAvaQu> _ShAvaQuCollection =
            new ObservableCollection<ShAvaQu>();

    public ObservableCollection<ShAvaQu> ShAvaQuCollection
    { get { return _ShAvaQuCollection; } }

    public class ShAvaQu
    {
        public string ShCode { get; set; }
        public string SiID { get; set; }
        public int PrCat { get; set; }
    }

Llamo al método desde una ventana, donde otra colección.ShQuCollection se muestra a través de ListView. En el controlador de eventos SelectionChanged tomo un argumento para esta pregunta de base de datos:

private void ShSelList_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {           
        SWindow sw = new SWindow();         
        string str = sw.ShQuCollection[ShSelList.SelectedIndex].ShCode;
        sw.GetStateByDate(str);
        Close();
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta