2015-10-19 128 views
1

我通過將x:uid標籤添加到我的所有元素並使用多語言工具包來添加本地化到我的UWP應用程序。不過,我遇到了一個問題,在這種情況下,我使用visualstatemanager在窄視圖中更改文本本身。我如何在本地化的應用程序中執行此操作?我的第一個想法是將元素的uid更改爲新的匹配新文本,我不確定這是可能的。通過更改x:uid在visualstatemanager中實現本地化?

這裏是想我做的一個例子,但不工作:

<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

我不知道我明白。你有什麼嘗試? – WiredPrairie

+0

@WiredPrairie我已經添加了一個例子 – Jason

回答

2

x:Uid是您TextBlock沒有依賴屬性,不能在運行時設置。您可以通過轉到XAML頁面後面的生成代碼(.g.i.cs文件)來仔細檢查。爲此,請在構造函數中的InitializeComponent()上按F12。現在將您的控件定位到生成的代碼中,並開始深入挖掘對象樹:您將不會遇到Uid屬性。這是一個XAML directive由一個屬性備份。

我通常如何解決這個問題,在VisualStates中的兩個TextBlocks之間有兩個TextBlocks(一個已摺疊)與長短文本並切換可見性。根據這些TextBlocks的父容器是什麼,您可能需要添加一個StackPanel或Grid,因爲一些父控件只能有1個子元素。