Высота, ширина и т. Д. Привязки к переменной - PullRequest
0 голосов
/ 11 января 2012

Я не знаю, просто ли я не понимаю, что я нашел до сих пор, или это действительно слишком сложно, чтобы применить к такой простой идее, как кажется.Я пытаюсь привязать высоту и ширину кнопки к переменным, которые хранятся в пользовательских настройках.Кажется, я не могу заставить это работать, или, скорее, я просто не знаю как, как в том, какие команды использовать.Проблема заключается в том, что вы не знаете, что поместить в поле Binding XAML.Если кто-то может указать на руководство, которое включает в себя только это, может объяснить, что делать, я был бы очень признателен.

Редактировать: я решил проблему с привязкой переменной, теперь она сохраняется в файле настроек пользователякогда это должно.Теперь у меня проблема со значением, сохраненным в пользовательской настройке, которая перезаписывается каждый раз, когда программа загружается со значением по умолчанию.Я запускаю это через выбор меню отладки VS, так что я полагаю, что проблема может лежать там, но я попытался опубликовать его и запустить и все еще получать те же результаты.Есть идеи?

Ответы [ 2 ]

1 голос
/ 11 января 2012

Предполагая, что под «настройками пользователя» вы подразумеваете встроенные настройки, а не пользовательскую реализацию:

См. http://blogs.windowsclient.net/bragi/archive/2008/07/03/using-settings-in-wpf-or-how-to-store-retrieve-window-pos-and-loc.aspx пример этого - по сути, вы хотите установить TwoWay привязки на Properties.Settings.Default: обратите внимание, что вам нужно заранее определить настройки с помощью пользовательского интерфейса настроек, и вы должны позвоните Properties.Settings.Default.Save(), когда приложение выйдет, чтобы сохранить настройки.

0 голосов
/ 13 января 2012

Я публикую этот ответ, чтобы, надеюсь, кто-то еще мог его прочитать и избежать такой нелепой проблемы. Прежде всего, что касается первоначального вопроса, 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 для проверки полностью инициализированного флага решило все проблемы. Надеюсь, это поможет кому-то еще.

...