c#/xaml で Windows 8 ストア アプリケーションを開発しています。Windows ストアのガイドラインでは、ユーザーが設定を変更すると、アプリケーションはその変更をすぐに反映する必要があると述べています。これを実現する方法を理解する助けが必要です。
ここに私のセットアップに関するいくつかの詳細があります。
OptionsView というカスタム コントロールを作成しました。
public partial class OptionsView : UserControl
{
public OptionsView()
{
this.InitializeComponent();
}
private void cmbEarliestYear_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
roamingSettings.Containers["appOptions"].Values["earliestYear"] = cmbEarliestYear.SelectedValue.ToString();
}
}
私の App.xaml.cs クラスでは、Callisto ライブラリの SettingsFlyout を使用して、ユーザーが [オプション] リンクをクリックしたときにカスタム オプション コントロールを表示しています。
protected override void OnWindowCreated(WindowCreatedEventArgs args)
{
base.OnWindowCreated(args);
SettingsPane.GetForCurrentView().CommandsRequested += onCommandsRequested;
}
void onCommandsRequested(SettingsPane settingsPane, SettingsPaneCommandsRequestedEventArgs eventArgs)
{
UICommandInvokedHandler optionsHandler = new UICommandInvokedHandler(onOptionsClick);
SettingsCommand optionsCommand = new SettingsCommand("options", "Options", optionsHandler);
eventArgs.Request.ApplicationCommands.Add(optionsCommand);
}
void onOptionsClick(IUICommand command)
{
SettingsFlyout settings = new SettingsFlyout();
settings.FlyoutWidth = SettingsFlyout.SettingsFlyoutWidth.Narrow;
settings.HeaderText = "Options";
settings.Content = new OptionsView();
settings.IsOpen = true;
}
アプリケーションに CreateTripPage というページがあります。そのページには、ユーザーが旅行の年を変更できるコンボボックスがあります。そのコンボボックスの最初の年は、ユーザーが [オプション] で設定した値に基づいて変更する必要があります。そのため、CreateTripPage が開いているときにユーザーが OptionsView の cmbEarliestYear の値を変更した場合、イベントを発生させる必要があります。必要なイベントを起動/サブスクライブする方法がわかりません。
どんな助けでも大歓迎です。