【问题标题】:Doing localization in visualstatemanager by changing x:uid?通过更改 x:uid 在 vi​​sualstatemanager 中进行本地化?
【发布时间】:2015-10-19 04:39:52
【问题描述】:

我通过向我的所有元素添加 x:uid 标记并使用多语言工具包来向我的 UWP 应用程序添加本地化。但是,我遇到了一个问题,在一种情况下,我使用 visualstatemanager 在窄视图中更改了文本本身。如何在本地化应用程序中执行此操作?我的第一个想法是将元素的 uid 更改为新的匹配新文本,我不确定这是否可能。

这是我想做但不起作用的示例:

 <textblock x:Name="DescriptionTextBox" x:uid="DescriptionTextBox"/> // Normal long description

 ....

              <VisualState x:Name="NarrowState">
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="0" />
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Target="DescriptionTextBox.Uid" Value="DescriptionTextBoxShort" /> // Uid of short description

【问题讨论】:

  • 我不确定我是否理解。你试过什么?
  • @WiredPrairie 我添加了一个例子

标签: xaml windows-runtime microsoft-metro win-universal-app


【解决方案1】:

x:Uid 不是您的 TextBlock 的依赖属性,并且不能在运行时设置。您可以通过转到 XAML 页面的生成代码(.g.i.cs 文件)来仔细检查这一点。为此,请在构造函数中的 InitializeComponent() 上按 F12。现在在生成的代码中找到您的控件并开始向下钻取对象树:您不会遇到 Uid 属性。这是一个由属性支持的XAML directive

我通常如何解决这个问题是有 2 个文本块(一个折叠),其中包含长文本和短文本,并在 VisualStates 中的两个文本块之间切换可见性。根据这些 TextBlocks 的父容器是什么,您可能需要添加 StackPanel 或 Grid,因为某些父控件只能有 1 个子元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2010-09-20
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多