我在从View到Vievmodel的绑定上没有什么问题。
我有菜单。这个菜单有5-6个项目。每个菜单项都有自己的用户内容。
1st - home.xaml
2nd - informations.xaml
3rd - more.xalm etc...如果我点击信息(第二个菜单),这个用户控件视图将被显示,所有的元素,如姓名,地址,电话,电子邮件等都绑定到视图模型和数据被加载(通过SQL select inside get)。这一切都没问题
但
如果我点击到第三个菜单,第二个菜单消失,第三个菜单被显示,在这个时候我在控制台中看到,所有的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
我现在让整个程序变慢了,因为每个视图(通过绑定)都填充了两次:(
发布于 2020-02-12 00:28:48
问题是您在属性get中有一个查询。
当您切换到新的XAML文件时,该文件需要读取该属性,并且查询将再次运行。
您可以将查询移动到对象构造函数,并将值存储在属性中。
public class viewmodel
{
public viewmodel()
{
this.BIND_USERNAME = SQL_READDATA(...
}
public string BIND_USERNAME { get; }
}这应该查询一次该值,并在每次调用该属性时重用该值。
https://stackoverflow.com/questions/60168714
复制相似问题