У меня есть средство выбора, это мой ViewModel. Все работает, единственная проблема в том, что тост запускается после открытия страницы? Кажется, что каждый раз, когда я открываю страницу, я сохраняю новые данные.
private List<TimeoutBetweenSentences> _sentencePause = new List<TimeoutBetweenSentences>();
private TimeoutBetweenSentences _selectedSentencePause;
public List<TimeoutBetweenSentences> SentencePause
{
get => _sentencePause;
set => SetProperty(ref _sentencePause, value);
}
public TimeoutBetweenSentences SelectedSentencePause
{
get => _selectedSentencePause;
set
{
this.IsBusy = true;
SetProperty(ref _selectedSentencePause, value);
NotificationService.ShowToast("Please wait, we are saving");
UserSettings newSetting = new UserSettings()
{
DateSaved = DateTime.Now,
OptionId = (int)SettingOption.TimeoutBetweenSentences,
Value = value.Position.ToString()
};
new Thread(new ThreadStart(async () =>
{
await LangUpDataSaverLoader.SaveUserSettings(newSetting);
LangUpDataSaverLoader.LoadUserSettingsAndFillAppValues();
})).Start();
this.IsBusy = false;
}
}
Загрузка сохраненных данных
_sentencePause = FillTimoutOptions();
var posTim = _sentencePause.FirstOrDefault(m => m.Value == LangUpUserCustomSettings.TimeoutBetweenEnglishSentences);
if (posTim != null)
{
_selectedSentencePause = posTim;
}
public Settings()
{
InitializeComponent();
BindingContext = new SettingsViewModel();
}
my xaml
<Picker
x:Name="sentencePausesStepper"
ItemsSource="{Binding SentencePause}"
WidthRequest="300"
ItemDisplayBinding="{Binding Text}"
SelectedItem="{Binding SelectedSentencePause, Mode=TwoWay}"
VerticalOptions="CenterAndExpand"
FontSize="20"
grial:PickerProperties.BorderStyle="Default"
TextColor= "{ DynamicResource ListViewItemTextColor }"
BackgroundColor="Transparent"
Title="{ grial:Translate A_PickerSetYourPauseEng }">
</Picker>
У вас есть Есть идеи, что может быть причиной этого? Мне нужно, чтобы событие было запущено, как только пользователь изменит элемент, а не при открытой странице.