2012-01-26 4 views
0

複数のアプリケーションで共有されるWindows Phoneページコードがあります。ページの上部に XAMLテキストフィールドにアプリケーションタイトルを表示する方法

が、私はそうのように、アプリケーションのタイトルを表示:

それは、アプリケーションのアセンブリで定義されたテキストは、アプリケーションのタイトルにバインドさせることは可能ですか?

私はアセンブリにタイトルを読んで、その後のようなものをすることによって、コードでこれを行うことができることを実現:

this.ApplicationTitle.Text = title; 

私はアセンブリで定義されているタイトルは、いくつかの魔法を使用してアクセスすることができることを期待していました以下のような:

Text={assembly title}" directly from within the xaml. 

おかげ

答えて

1

は、以下のようなアプリケーションの名前を返しますApplicationTitleというプロパティを作成し、そこに私をバインドしますnはXAML:

public string ApplicationTitle 
{ 
    get { return System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; } 
} 

(。あなたができないか、データコンテキストを使用しない場合は、相対的結合ソースを使用することができます)

編集:

私はちょうど実現GetNameは[セキュリティクリティカル]メソッドであるため、私の方法にはセキュリティ上の考慮が含まれていました。メソッドにアクセスしようとすると失敗しました:System.Reflection.Assembly.GetName()

AssemblyTitle属性を使用してアセンブリ名を取得し、プロパティに戻す別の方法があります。

public string ApplicationTitle 
{ 
    get 
    { 
     System.Reflection.AssemblyTitleAttribute ata = 
      System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(
      typeof(System.Reflection.AssemblyTitleAttribute), false)[0] as System.Reflection.AssemblyTitleAttribute; 
     return ata.Title; 
    } 
} 

は、XAMLでバインドするには、これを使用することができます:

Text="{Binding ElementName=LayoutRoot, Path=Parent.ApplicationTitle}" 
+0

は、私もその道を開始し、Applicationクラスの静的プロパティApplicationTitleを作成しました。しかし、私はXAMLから呼び出す方法をまだ見つけていません。コンパイラが詰まらないようにするか、空のテキスト以外のものを実際に私に渡します。 – jyavenard

+0

メソッドでは、必要なすべてのページでApplicationTitleプロパティを定義する必要がありますタイトルを参照する。それは私がしたいことではありません – jyavenard

+0

PhoneApplicationPageから継承し、そのプロパティを含んでいる**ベースクラス**を作成してアプリケーションで使用する方法はありますか?あなたの最初のコメントについては、はい、プロパティは静的である必要がありますが、コンパイラは上記を窒息させません。 – Mzn

関連する問題