2017-12-20 10 views
0

私は簡単な時計アプリケーションでいくつかの問題を抱えています。 UWPとC#にはとても新しいので、忍耐が大いに評価されます。私は何をしようとしているのは、設定された時間に基づいて夜間に時計のフォント/明るさautodimを持っています。TimePicker UWP Basics

:だから、私は、いくつかの他の設定(24時制など)と設定ページの作品を持って、私はこれら二つのアイテムを持っているSettings.XAMLでTimePicker

を使用しています

私の.xaml.csに私はこのコードを持っています。私はそれを設定に保存しようとしているか、またはデフォルト値を午前7時と午前17時に設定しています。

public DateTime DimDisplayStartTimeSetting 
    { 
     get 
     { 

      if (localSettings.Values["DimDisplayStartTimeSettingValue"] == null) 
      { 
       localSettings.Values["DimDisplayStartTimeSettingValue"] = "7:00"; 
      } 
      /// return (localSettings.Values["DimDisplayStartTimeSettingValue"]); 
      return (localSettings.Values["DimDisplayStartTimeSettingValue"]); 

      localSettings.Values["DimDisplayStartTimeSettingValue"] = "7:00"; 
     } 

     set 
     { 
      localSettings.Values["DimDisplayStartTimeSettingValue"] = value; 
     } 
    } 

    public DateTime DimDisplayStopTimeSetting 
    { 
     get 
     { 

      if (localSettings.Values["DimDisplayStopTimeSettingValue"] == null) 
      { 
       localSettings.Values["DimDisplayStopTimeSettingValue"] = "17:00"; 
      } 
      /// return TimeSpan.Parse(localSettings.Values["DimDisplayStopTimeSettingValue"].ToString()); 

     } 

     set 
     { 
      localSettings.Values["DimDisplayStopTimeSettingValue"] = value; 
     } 
    } 

私は何か間違っているようです。具体的にはDateTimeとTimeSpanを使用しています。誰かが私が少し良く理解するのを助けることができますか?私はTimePickerのドキュメントを読んで、TimeSpanが必要だと思っていると思っていますが、Settings.xaml.csで正しく設定する方法はわかりません。ありがとう!

答えて

0

DateTimeは、正確な日時(例えば、2017-10-12 17:00)を格納し、TimeSpanは、期間(例えば、2時間1分5秒または3日間) 。

あなたがTimeSpanで行く、その後、(ケースのように思われる)その日の時刻のみ、設定で特定の日付を格納する必要がない場合:

public TimeSpan DimDisplayStartTimeSetting 
    { 
     get 
     { 

      if (!localSettings.Values.ContainsKey("DimDisplayStartTimeSettingValue")) 
       localSettings.Values["DimDisplayStartTimeSettingValue"] = TimeSpan.FromHours(7); 

      return (TimeSpan) localSettings.Values["DimDisplayStartTimeSettingValue"]; 
     } 

     set 
     { 
      localSettings.Values["DimDisplayStartTimeSettingValue"] = value; 
     } 
    } 

    public TimeSpan DimDisplayStopTimeSetting 
    { 
     get 
     { 

      if (!localSettings.Values.ContainsKey("DimDisplayStopTimeSettingValue")) 
       localSettings.Values["DimDisplayStopTimeSettingValue"] = new TimeSpan(17, 0, 0); 

      return (TimeSpan) localSettings.Values["DimDisplayStopTimeSettingValue"]; 
     } 

     set 
     { 
      localSettings.Values["DimDisplayStopTimeSettingValue"] = value; 
     } 
    } 
ここ

TimeSpan.FromHours(7);new TimeSpan(17, 0, 0);行います同じジョブ - 新しいTimeSpanオブジェクトを作成しますが、状況に適した構文を常に選択することができます。

ローカル設定コンテナがTimeSpanオブジェクトを格納することが可能であるが、それはobject、すべてを返しますので、我々は、手動でこの行のように、TimeSpan型に戻り値をキャストする必要があります。

return (TimeSpan) localSettings.Values["DimDisplayStopTimeSettingValue"]; 

ローカル設定コンテナはdoesnのしかし、DateTimeオブジェクトをサポートしていますが、TimeSpanの代わりにそれらを保存する必要がある場合は、コンテナでサポートされているDateTimeOffsetタイプにいつでも変換できます。

日付と時刻のタイプの違いについては、hereを参照してください。

関連する問題