Как отобразить изменения переменной из класса, который находится в отдельном файле C#
Сразу скажу, что я новичок и пытаюсь разобраться, только что-то не получается.
У меня есть класс Util в котором сборная солянка. В нём есть переменная списка и функции для модификации этой переменной. При открытии определённого окна, в ListView отображается список из этой переменной. Далее, я добавляю новую запись в БД, а после обновляю переменную, в которой уже отображается список с новой записью.
В базу всё добавляется, список обновляется. Как мне после закрытия окна добавления записи обновить ListView родительского окна?
Возможно, решение в Binding и интерфейсе INotifyPropertyChanged, в которых я благополучно не могу разобраться очень долгое время. Напомню, что класс находится в отдельном файле. Я могу объединить ListView с классом, который прописан в cs файле этого окна, но те данные, которые мне приходится отображать модифицируются с помощью другого окна (не напрямую, а с помощью обновления (повторный запрос к БД)).
Как можно реализовать это проще и как в дальнейшем сделать это правильно?
Для примера:
Это переменные класса Util и функции для их модификации.
private static List<string> razn_k = new List<string>();
private static List<string> razn_n = new List<string>();
public static void Set_razn()
{
SqlCommand set1 = new SqlCommand(@"Select Kod, Nazv from Raznovidnosti_ingr where Kod_ingr = " + Get_kod_i(), conK);
SqlDataReader dr1 = set1.ExecuteReader();
while (dr1.Read())
{
int k; string n;
k = dr1.GetInt32(0);
n = dr1.GetString(1);
razn_k.Add(k.ToString());
razn_n.Add(n);
}
dr1.Close();
}
public static List<string> Get_razn_k()
{
return razn_k;
}
public static List<string> Get_razn_n()
{
return razn_n;
}
public static void Clear_razn()
{
razn_k.Clear();
razn_n.Clear();
}
Спасибо за любую помощь!
Ответы (1 шт):
В общем: 1)Я поменяла List на ObservableCollection; private static ObservableCollection razn_n = new ObservableCollection();
public static ObservableCollection<string> Razn_n
{
get
{
return razn_n;
}
}
public static void Set_razn()
{
SqlCommand set1 = new SqlCommand(@"Select Kod, Nazv from Raznovidnosti_ingr where Kod_ingr = " + Get_kod_i(), conK);
SqlDataReader dr1 = set1.ExecuteReader();
while (dr1.Read())
{
string n;
n = dr1.GetString(1);
razn_n.Add(n);
}
dr1.Close();
}
public static void Clear_razn()
{
razn_k.Clear();
razn_n.Clear();
}
2)Сделала свойство для переменной(поля) get, которое возвращает значение;
public static ObservableCollection<string> Razn_n
{
get
{
return razn_n;
}
}
3)Добавила пространство имён на форму, к которой нужна привязка, т.к. класс хранится в корне, а форма в папке;
xmlns:loc="clr-namespace:TestKafe"
4) Связала ListView к статическому свойству (если можно так сказать) с помощью Binding Path=(префикс:Класс.Свойство);
ItemsSource="{Binding Path=(loc:Util.Razn_n)}"
5) Установила у ListView Mode=OneWay.
ItemsSource="{Binding Path=(loc:Util.Razn_n), Mode=OneWay}"
Я начинаю потихонечку разбираться.
Спасибо всем, кто писал в комментариях! Вы ооочень помогли! Если у вас есть хорошие источники для обучения по данной теме, пожалуйста, дайте об этом знать!

