Проблема привязки WPF, если я вызываю код из другого UC - PullRequest
0 голосов
/ 08 мая 2019

Привет, у меня проблема с пониманием привязки в WPF.

У меня есть пользовательский элемент управления, он содержит ListView и читает данные из базы данных, но это занимает не менее 60 секунд, а затем заполняет представление списка данными. В строке состояния отображается процесс загрузки.

Если данные загружены в память и пользователь открывает UC, модель View загружает данные в ListView. Все отлично работает.

Но если пользователь открывает UC до окончания чтения данных и в конце чтения данных, я вызываю тот же метод в viewModel, в коде данных загружается в элемент списка, но ListView по-прежнему пуст. Каким-то образом ListView не показывает данные.

 <ListView x:Name="ListViewUK" ItemsSource="{Binding ListOfAccountsFromExchUK}" >

Просмотр модели

    public class ExchequerViewModel :BaseView
{
    List<Exch_Account> exch_Accounts_UK;

    public ObservableCollection<PAMHeaderModel> ListOfAccountsFromExchUK { get; set; }



    #region CONSTRUCTOR 
    public ExchequerViewModel()
    {
       ListOfAccountsFromExchUK = new ObservableCollection<PAMHeaderModel>();
       PopulateExchequerList();
    }
    #endregion

    public void PopulateExchequerList()
    {
        exch_Accounts_UK = ExchequerMemory.ExcAccountList_UK;
        if (exch_Accounts_UK == null)
        {
            AutoClosingMessageBox.Show("Exchequer UK - datas are loading Pleae try again later.", "Information", 2000);
        }
        if (exch_Accounts_UK != null)
        {
            UmbList = new Dictionary<string, string>();
            foreach (var acc in exch_Accounts_UK)
            {
                ListOfAccountsFromExchUK.Add(new PAMHeaderModel
                {
                    Company = "UK",
                    RefNo = acc.Code,
                    Name = acc.Company,
                    Subsidiary = acc.UDF6

                });

                UmbList.Add(acc.Code, acc.UDF6); ? acc.UDF6 : "";
            }
            if (ListOfAccountsFromExchUK != null)
                UKStatusInfoLabel = ListOfAccountsFromExchUK.Count();
        }

Контроль пользователя

    public ExchequerViewModel viewModel;
    public ExchequereUC()
    {
        InitializeComponent();
        viewModel = new ExchequerViewModel();
        DataContext = viewModel;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...