我通过在我的所有元素中添加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
答案 0 :(得分:2)
x:Uid
在TextBlock
上没有依赖属性,无法在运行时设置。您可以通过转到XAML页面后面生成的代码(.g.i.cs文件)来仔细检查。为此,请在构造函数中的InitializeComponent()上按F12。现在在生成的代码中找到您的控件并开始向下钻取对象树:您将不会遇到Uid属性。它是由属性备份的XAML directive。
我通常如何解决这个问题,即使用长文本和短文本进行2个TextBlocks(一个折叠)并在VisualStates中切换两个TextBlock之间的可见性。根据这些TextBlocks的父容器的内容,您可能需要添加StackPanel或Grid,因为某些父控件只能有1个子元素。