Я публикую этот ответ, чтобы, надеюсь, кто-то еще мог его прочитать и избежать такой нелепой проблемы. Прежде всего, что касается первоначального вопроса, Staurt ответил на него довольно хорошо. Но мое редактирование выше подняло новую, но связанную проблему. Я закончил тем, что починил это случайно.
Целью всего этого было то, что у меня есть ползунок, который регулирует размер панели кнопок быстрого доступа. Слайдер работал, но, как я уже сказал выше, он будет сбрасываться каждый раз при перезагрузке. Проблема в этом случае заключалась в том, что у меня были кнопки для изменения размера при перемещении ползунка, поэтому я использовал событие slider_ValueChanged, как вы можете видеть здесь:
private void iconSizeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
try
{
Properties.Settings.Default.iconHeight = Convert.ToInt32(iconSizeSlider.Value);
Properties.Settings.Default.iconWidth = Convert.ToInt32(iconSizeSlider.Value * 1.3);
Properties.Settings.Default.Save();
//iconWidth.Text = buttonWidth.ToString();
//ButtonRefresh();
}
catch (FormatException)
{
}
}
Пытаясь использовать часть запуска до курсора VS2010, я устал от F11 через множество шагов загрузки, поэтому в качестве средства отладки я добавил флаг bool fullyInitialized
. Это решило проблему полностью. Очевидно (что я не осознавал раньше), когда ползунок был впервые инициализирован, он считал, что значение изменилось, поэтому, когда он запускался через метод ValueChanged, он сбрасывал все на значение по умолчанию. Таким образом, добавление простого условия к try-catch для проверки полностью инициализированного флага решило все проблемы. Надеюсь, это поможет кому-то еще.