0

コンボボックスがあります

<ComboBox x:Name="cityPicker">
    <ComboBoxItem IsSelected="True">
        <x:String>
            city1
        </x:String>
    </ComboBoxItem>
    <ComboBoxItem>
        <x:String>
            city2
        </x:String>
    </ComboBoxItem>

ユーザーが「city2」を選択すると、selectedCityキーのローミング設定に保存されます。

ユーザーが終了後にアプリケーションを起動し、別のページからこのページに戻ったときに、ローミング設定からこの値をロードする必要があります。

このコード値を RoamingSetting に保存すると、都市を変更した後にアプリケーションを起動すると、roamingsettings にその値が設定されます。しかし、コンボボックスはそれを取得しません。コンボボックスで選択したアイテムは空のままです。

コンボボックスで選択した項目をプログラムで変更するには?

 protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
 {
     var roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
     if (roamingSettings.Values.ContainsKey("selectedCity"))
     {
         cityPicker.SelectedValue = roamingSettings.Values["selectedCity"].ToString();
     }
 }

public StartPage()
        {
            InitializeComponent();

            cityPicker.SelectionChanged += cityPicker_SelectionChanged;
        }

        void cityPicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var roamingSettings =
               Windows.Storage.ApplicationData.Current.RoamingSettings;
            var cityPick = cityPicker.SelectedItem as ComboBoxItem;
            if (cityPick != null) roamingSettings.Values["selectedCity"] = cityPick.Content;
        }

変化でしかできないSelectedIndex。しかし、これは私が望むものではありません。

4

1 に答える 1