首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视图模型绑定称为multiply (第一次加载视图,第二次切换到其他视图)

视图模型绑定称为multiply (第一次加载视图,第二次切换到其他视图)
EN

Stack Overflow用户
提问于 2020-02-11 20:23:34
回答 1查看 68关注 0票数 0

我在从View到Vievmodel的绑定上没有什么问题。

我有菜单。这个菜单有5-6个项目。每个菜单项都有自己的用户内容。

代码语言:javascript
复制
1st - home.xaml
2nd - informations.xaml
3rd - more.xalm etc...

如果我点击信息(第二个菜单),这个用户控件视图将被显示,所有的元素,如姓名,地址,电话,电子邮件等都绑定到视图模型和数据被加载(通过SQL select inside get)。这一切都没问题

如果我点击到第三个菜单,第二个菜单消失,第三个菜单被显示,在这个时候我在控制台中看到,所有的sql再次被调用!

代码如下:

viewmodel.cs

代码语言:javascript
复制
    public string BIND_USERNAME {
    get { return SQL_READDATA("SYBASE", "select A.SKUPAKCE1 from AKCE_V A where A._ID='" + BIND_INTERNIIDAKCE + "'", "console"); }'
    }


informations.xaml
代码语言:javascript
复制
<Label  Content="{binding BIND_USERNAME}"  Style="{StaticResource sekceheader}" Grid.Row="0" Grid.Column="0" />```

完整的代码在这里:https://github.com/sgamescz/HH6C

我现在让整个程序变慢了,因为每个视图(通过绑定)都填充了两次:(

EN

回答 1

Stack Overflow用户

发布于 2020-02-12 00:28:48

问题是您在属性get中有一个查询。

当您切换到新的XAML文件时,该文件需要读取该属性,并且查询将再次运行。

您可以将查询移动到对象构造函数,并将值存储在属性中。

代码语言:javascript
复制
public class viewmodel
{
    public viewmodel()
    {
        this.BIND_USERNAME = SQL_READDATA(...
    }

    public string BIND_USERNAME { get; }
}

这应该查询一次该值,并在每次调用该属性时重用该值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60168714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档