绑定文本块,以便在一个页面上对变量进行一次更改反映在UI中
基本布局(VB.NET& WPF / XBAP):
我有一个MainPage - mainpage.xaml
在MainPage中,我有一个托管其他页面的框架。自动加载的第一个页面是LogIn - LogIn.xaml
用户输入他们的电子邮件进行登录(无需密码,只需要识别电子邮件,内部应用程序,因此用户不需要密码,甚至用户也不需要密码)。
在MainPage.xaml上,标题应该有一个“Hello”TexBlock(名称:ui_txbUserName)。 LogIn页面有一个方法,在提交时获取UserID(出于其他原因并保存它)和用户名。
我希望在用户登录时更改ui_txbUserName,如果他/她从一个帐户注销到另一个帐户,则更新。我看过INotifyPropertyChanged和Dependency Properties,我只是不确定如何去做!任何帮助都是极好的!!!
谢谢!
UsingOfficerID - 当一个人登录时设置的全局变量,它在应用程序中的所有位置使用。
我在示例应用程序中尝试了以下内容:
http://www.2shared.com/file/68enzucg/SampleApp.html
这些都没有在UI中反映出来
没有找到相关结果
已邀请:
2 个回复
坊岔埠绵
现在,在UserViewModel中,您有一个UserName属性,但它似乎返回并设置了User对象用户名属性。即使用户对象似乎永远不会被设置在任何地方。为了简单起见,我只使用了一个字符串而不是新的支持字段:
最初,你出于某种原因调用了MyBase.OnPropertyChanged(“地址”)?也许这是一个复制/粘贴错误,但字符串值必须与其值已更改的属性的名称匹配,因为绑定引擎将使用反射来检索新的属性值。 最后,我刚刚更改了MainWindow.xaml中的绑定表达式
因为未在TextBlock上显式设置DataContext,所以它将使用视图的DataContext(UserControl),该视图设置为UserViewModel的实例。这意味着它将绑定到DataContext上的UserName属性,这是您想要的。要测试它,您可以在UserViewModel的构造函数中设置Me.UserName =“Something”的值。 希望你能看到绑定对字符串的作用,你可以找出你需要去哪里使用它的用户类型。
芦歉竭皑
假设IUser具有forename和surname属性,您可以使用以下命令在视图中绑定它:
现在,只要CurrentUser发生更改,您的UI就会更新。请注意,如果您希望在用户类型的属性发生更改(例如forename)时更新UI,那么IUser的具体实现也需要实现INotifyPropertyChanged。