我有WPF窗口,它使用dockpanel和菜单控件。我有代码根据用户ID创建菜单选项。
在此窗口中,我有一个包含WPF页面的框架。我在页面上执行所有身份验证,然后拥有要使用的窗口的用户ID。但是,我无法让父窗口“刷新”并使用新的ID信息创建菜单栏。窗口加载时,我没有运行命令来显示菜单栏。我已经尝试将它放在它自己的公共函数中并从页面调用它,但这似乎不起作用。
必须有一个我缺少的窗口方法,可以根据页面的调用显示菜单栏。
答案 0 :(得分:0)
听起来你仍然在WinForms风格的程序上思考。你在WinForms中描述的是必要的,但在WPF中它通常要容易得多:只使用数据绑定。只要您的菜单项是从“UserID”依赖项属性(或基于它启用/禁用)生成的,那么您需要做的就是设置UserID DependencyProperty,UI将自动更新而不需要额外的代码。
以下是如何将UserID转换为Window或上下文对象的DependencyProperty:
在DependencyProperty中拥有UserID后,有很多方法可以在菜单项发生变化时自动更新:
对于典型情况,我们在这里讨论的不到10行C#,不包括DependencyProperty声明。