UWPの静的プロパティには、WPFと同じ方法でバインドすることはできません。 x:静的なマークアップ拡張はありません。
あなたは、いくつかのオプションがあります。
要素のDataContextのは、静的プロパティが定義されているタイプのインスタンスである場合、あなたはいつものように、静的プロパティにバインドすることができます:
<TextBlock Text="{Binding MyStaticProperty}" />
public sealed partial class BlankPage1 : Page
{
public BlankPage1()
{
this.InitializeComponent();
this.DataContext = this;
}
public static string MyStaticProperty { get { return "Static..."; } }
}
静的プロパティは別のクラスで定義されている場合は、あなたの最良のオプションは、非静的1に静的プロパティをラップすることです:
public sealed partial class BlankPage1 : Page
{
public BlankPage1()
{
this.InitializeComponent();
this.DataContext = this;
}
public static string MyWrapperProperty { get { return MyStaticClass.MyStaticProperty; } }
}
public static class MyStaticClass
{
public static string MyStaticProperty { get { return "Static..."; } }
}
あなたが財産チャンをしたい場合プロパティのソースオブジェクトは、PropertyChangedイベントを発生させてターゲットプロパティを動的にリフレッシュできるように、INotifyPropertyChangedインターフェイスを実装する必要があるため、静的プロパティにバインドするのは意味がありません。
あなたはまだINotifyPropertyChangedインターフェイスを実装してビューモデルの非静的1に静的プロパティをラップすることができます:
public class ViewModel : INotifyPropertyChanged
{
public string MyNonStaticProperty
{
get { return MyStaticClass.MyStaticProperty; }
set { MyStaticClass.MyStaticProperty = value; NotifyPropertyChanged(); }
}
//...
}
public static class MyStaticClass
{
public static string MyStaticProperty { get; set; }
}
あなたはobviosulyビューモデルからNotifyPropertyChanged(「MyNonStaticProperty」)を呼び出す必要がありますビューのターゲットプロパティをリフレッシュするときはいつでも、クラスを使用できます。
出典
2016-12-30 10:22:38
mm8
可能な限り静的変数を取り除くことを強くお勧めします。 –
アプリケーション設定などのグローバル変数を各ページに表示して変更するには、どのような方法が最適ですか? – user3239349
グローバル/静的変数を使用するのが最悪の場合、特別な「最良の」方法はありません。 –