【问题标题】:UWP Template 10 Hamburger Menu. Update button text programmaticallyUWP 模板 10 汉堡菜单。以编程方式更新按钮文本
【发布时间】:2016-06-12 08:27:23
【问题描述】:

我有一个支持多种语言的应用程序。每种语言都保存在 ResourceDictionary 中,然后在运行时合并到主资源字典中。除了汉堡菜单外,所有东西都可以找到。菜单从不显示字典中的合并值。菜单中的每个按钮都将其文本绑定到一个静态资源。

Hamburger 菜单似乎是在 App.xmal.cs 中调用 OnInitializeAsync 之前创建的,因为这是我合并字典的地方,并且 Hamburger 菜单总是从主字典中加载默认文本。

在应用程序中,当我选择另一种语言时,应用程序上的其余部分会立即更改为新语言,但汉堡菜单永远不会更新文本,我找不到任何方法来强制它更新文本。

有人知道如何动态更改汉堡菜单中按钮上的文本吗?

【问题讨论】:

  • 我解决了程序启动时菜单文本发生变化的问题。在执行任何其他操作之前,我将字典合并作为 OnInitializeAsync 中的第一件事。但是一旦应用程序运行,我仍然无法更改菜单。
  • 如果您提供一个示例应用程序,我们会更有帮助。

标签: c# uwp hamburger-menu template10


【解决方案1】:

这个特别简单。请记住,这只是 XAML。在您的 HamburgerButtonInfo 中,您向 TextBlock 提供您拥有的文本。您需要做的就是向该 TextBlock 添加一个 x:Name,然后您可以在 Shell 中随意更改它。我不确定这是否有意义,但我确实希望它有意义。请记住,这只是更新 TextBlock,而不是使用模板 10 更新内容。请记住,这只是 XAML。

public class Shell
{
    public void UpdateText(string text)
    {
        this.MyTextBlock.Text = text;
    }
}

没什么特别的。

【讨论】:

  • 当我更改绑定所有按钮的字典时,是否无法让汉堡菜单自动刷新其所有内容?您暗示我必须遍历所有按钮,在 xaml 中找到每个按钮的文本,然后进行手动字典查找以更改文本。通常我可以调用 NavigationService.Refresh() 并更新所有内容。
猜你喜欢
  • 1970-01-01
  • 2016-05-15
  • 2016-05-16
  • 1970-01-01
  • 2017-08-09
  • 2023-03-18
  • 1970-01-01
  • 2018-12-22
  • 1970-01-01
相关资源
最近更新 更多