2016-06-12 20 views
1

私は複数の言語をサポートするアプリケーションを持っています。各言語はResourceDictionaryに保持され、実行時にメインリソース辞書にマージされます。ハンバーガーメニューを除いて、すべてのものが検索されます。メニューには、辞書からのマージされた値は表示されません。メニューの各ボタンはStaticResourceにバインドされたテキストを持っています。UWPテンプレート10ハンバーガーメニュー。ボタンのテキストをプログラムで更新する

App.xmal.csでOnInitializeAsyncが呼び出される前にハンバーガーメニューが作成されているように見えます。これは辞書をマージする場所であり、ハンバーガーメニューは常にメイン辞書からデフォルトのテキストを読み込むためです。

アプリケーションでは、アプリケーションの残りの部分がすぐに新しい言語に変更されますが、ハンバーガーメニューはテキストを更新しません。テキストを更新する方法はありません。

ハンバーガーメニューのボタンのテキストを動的に変更する方法を知っている人はいますか?

+0

プログラムの起動時にメニューテキストを変更する問題を解決しました。私は、他のものが実行される前に、辞書のマージをOnInitializeAsyncの最初のものとして行います。しかし、私はまだアプリが実行された後にメニューを変更することができません。 – Terry151151

+0

サンプルアプリケーションを提供した方がより役に立ちます。 –

答えて

0

これは特に簡単です。覚えておいてください、これは単なるXAMLです。あなたのHamburgerButtonInfoの中に、あなたが持っているテキストをTextBlockに提供します。必要なのは、x:NameをそのTextBlockに追加するだけで、Shell内から必要に応じて変更することができます。私はこれが意味をなさないとは確信していませんが、確かにそれが願っています。テンプレート10で何かを更新するのではなく、TextBlockを更新するだけです。これは単なるXAMLです。

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

何もありません。

+0

すべてのボタンがバインドされている辞書を変更しているので、その内容を自動的に更新するハンバーガーメニューを取得する方法はありませんか?私がすべてのボタンを反復し、xaml内の各ボタンのテキストを見つけてから、テキストを変更するために手動で辞書を検索する必要があることを暗示します。通常、NavigationService.Refresh()を呼び出すとすべてが更新されます。 – Terry151151

関連する問題