【问题标题】:Can't access the Application buttons from c# (Windows Phone 7)无法从 c# 访问应用程序按钮(Windows Phone 7)
【发布时间】:2021-09-03 13:49:28
【问题描述】:

我正在编写一个 Windows Phone 7 应用程序,并希望在页面加载时以编程方式访问我的应用程序栏按钮。但这些似乎总是为空。我尝试在以下事件中访问该按钮:

  • 页面构造器(调用 InitializeComponent 之后)
  • 页面的 `Loaded' 事件处理程序
  • 应用程序栏StateChanged 事件处理程序

单个按钮上似乎也没有Loaded 事件。我在这里违反规则了吗?为什么我用c#无法访问应用栏按钮?

【问题讨论】:

    标签: windows-phone-7


    【解决方案1】:

    当我在一个 CTP 中查看此内容时,可以访问我在此线程中概述的元素。

    Cannot change ApplicationBar items in code

    请注意,可以通过类型而不是您最初期望的实例来访问应用程序栏元素。

    Peter Torr 很快澄清说,应用程序栏在框架中并不是一等公民。此处作了更详细的解释,供您参考。

    Why are the ApplicationBar objects not FrameworkElements? - Peter Torr's Blog

    【讨论】:

    • 感谢米克的链接。不管 Peter Torr 说什么,我仍然无法相信,似乎让 c# 可以访问 UI 树的所有内容。
    • 是的,我猜有时你必须选择你的战斗
    • 明智的话...无论如何,我最终能够通过连接到应用程序栏StateChanged处理程序来访问菜单项。然后我可以访问 MenuItems 和 Buttons 集合。但在你欢呼之前,它看起来已经被渲染了,菜单项中的任何文本更改都不会出现在 UI 中。
    • 忘了提及:我想知道这一点的全部原因是我可以本地化按钮文本。其他人是怎么做到的???
    【解决方案2】:

    为了本地化按钮文本,在页面的Loaded 事件处理程序中,我一直在迭代页面的ApplicationBar.Buttons 列表并将按钮的Text 属性中的值替换为资源翻译。似乎有效,即使它很笨拙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      相关资源
      最近更新 更多