Привязки Viewmodel называются кратными (сначала при просмотре нагрузки, затем при переключении в другое представление) - PullRequest
0 голосов
/ 11 февраля 2020

У меня небольшая проблема с привязкой из View в Vievmodel.

У меня есть меню. В этом меню 5-6 пунктов. Каждый пункт меню имеет собственный пользовательский контент.

1st - home.xaml
2nd - informations.xaml
3rd - more.xalm etc...

Если я нажму на информацию (2-е меню), будет отображено это представление пользовательского контроля, и все элементы, такие как имя, адрес, телефон, электронная почта и т. Д. c, являются обязательными. для просмотра модели и загрузки данных (по SQL выберите внутри get). Это все ОК

НО

, если я нажимаю на 3-е меню, 2-е меню исчезает, отображается 3-е меню, и в это время я вижу в консоли, все sql вызываются снова!

код здесь:

viewmodel.cs

    public string BIND_USERNAME {
    get { return SQL_READDATA("SYBASE", "select A.SKUPAKCE1 from AKCE_V A where A._ID='" + BIND_INTERNIIDAKCE + "'", "console"); }'
    }


informations.xaml
<Label  Content="{binding BIND_USERNAME}"  Style="{StaticResource sekceheader}" Grid.Row="0" Grid.Column="0" />```

Полный код здесь: https://github.com/sgamescz/HH6C

У меня сейчас вся программа медленная, потому что каждое представление (через привязку) заполняется дважды: (

1 Ответ

0 голосов
/ 11 февраля 2020

Проблема в том, что у вас есть запрос в свойстве get.

Когда вы переключаетесь на новый файл XAML, этот файл должен прочитать свойство, и запрос будет выполнен снова.

Вы можете переместить запрос в конструктор объекта и сохранить значение в свойстве.

public class viewmodel
{
    public viewmodel()
    {
        this.BIND_USERNAME = SQL_READDATA(...
    }

    public string BIND_USERNAME { get; }
}

Это должно запросить значение один раз и повторно использовать это значение каждый раз, когда вызывается свойство.

...