2

私は今のところ Template10 が大好きです。メインページの設定値にバインドする方法については、少し行き詰まっています。適切に保存されている新しい bool 設定を追加しました。私のメインページには、設定への可視性バインディングがあります。

Visibility="{Binding UseAmbientLightSensor, Converter={StaticResource CollapsedWhenFalseConverter}}"

これはアプリの開始時に期待どおりに機能し、MainPageViewModel は設定から​​値を読み取り、その設定に基づいてグリッドが表示または折りたたまれます。

ただし、設定ページに移動してその値を変更すると、このバインディングを設定に「聞く」ことができないようです。メインページに戻っても表示は変わりません。アプリを再起動した場合にのみ機能します。

通常の Template10 のインストールでは、これは MainPage の小さなロゴを、その設定に基づいて変化する設定ページの「UseLightThemeButton」設定にバインドすることに似ています。

4

2 に答える 2

0

発生しない可能性のあるシナリオが 2 つあります。

  • ブール値が更新されたときにプロパティ変更イベントを発生させます。
  • バインディングを双方向モードに設定します。

これを行うには、Visibilityプロパティのバインディング モードを変更します

Visibility="{Binding UseAmbientLightSensor, Mode=TwoWay, Converter={StaticResource CollapsedWhenFalseConverter}}"

これにより、ビュー モデル内のプロパティの変更をリッスンするように

次に、XAML ビューにその変更を通知するタイミングをビュー モデルに伝える必要があります。Template10 を使用している場合は、次のように実行できます。

private bool useAmbientLightSensor;

public TodoListControlViewModel UseAmbientLightSensor
{
    get
    {
        return this.useAmbientLightSensor;
    }

    set
    {
        this.Set(ref this.useAmbientLightSensor, value);
    }
}

ビューモデルは、イベントを発生させるメソッドViewModelBaseを提供するクラスから拡張する必要があります。これにより、ビューはビューモデルの変更を認識できます。SetOnPropertyChanged

詳細については、INotifyPropertyChanged インターフェースその実装を確認してください。

于 2016-02-29T08:24:05.390 に答える