Привязать к значению, указанному в настройках

Можно ли в WPF использовать привязку со значениями, определенными в настройках? Если это возможно, предоставьте образец.

67 голосов | спросил Moheb 10 Maypm09 2009, 13:55:29

3 ответа


0

Во-первых, вам нужно добавить собственное пространство имен XML, которое будет проектировать пространство имен, в котором определяются параметры:

xmlns:properties="clr-namespace:TestSettings.Properties"

Затем в файле XAML перейдите к экземпляру настроек по умолчанию, используя следующий синтаксис:

 {x:Static properties:Settings.Default}

Итак, вот код окончательного результата:

<ListBox x:Name="lb"
         ItemsSource="{Binding Source={x:Static properties:Settings.Default},
                               Path=Names}" />

Источник: WPF - Как связать элемент управления со свойством, определенным в настройках?


Примечание. Как отметили @Daniel и @nabulke, не забудьте установить Модификатор доступа вашего файла настроек на Public и Область до User

ответил CSharper 10 Maypm09 2009, 13:57:18
0

Приведенное выше решение работает, но я нахожу его довольно многословным ... вместо этого вы можете использовать собственное расширение разметки, которое можно использовать следующим образом:

<ListBox x:Name="lb" ItemsSource="{my:SettingBinding Names}" />

Вот код для этого расширения:

public class SettingBindingExtension : Binding
{
    public SettingBindingExtension()
    {
        Initialize();
    }

    public SettingBindingExtension(string path)
        :base(path)
    {
        Initialize();
    }

    private void Initialize()
    {
        this.Source = WpfApplication1.Properties.Settings.Default;
        this.Mode = BindingMode.TwoWay;
    }
}

Подробнее здесь: http://www.thomaslevesque.com/2008/11/18/wpf-binding-to-application-settings-using-a-markup-extension/

ответил Thomas Levesque 11 Mayam09 2009, 03:19:01
0

@ Ответ CSharper не сработал для моего приложения WPF, написанного на VB.NET (не на C #, в отличие от, по-видимому, 99,999% других приложений WPF), так как я получил постоянную ошибку компилятора с жалобой на то, что Settings не удалось найти в пространстве имен MyApp.Properties, которое не исчезнет даже после перестройка.

Вместо этого после многих поисков в Интернете у меня получилось использовать пространство имен XAML local, созданное по умолчанию в главном приложении. XAML-файл окна:

<Window
    <!-- Snip -->
    xmlns:local="clr-namespace:MyApp"
    <!-- Snip -->
><!-- Snip --></Window>

... и привязать к нему мои настройки, используя что-то вроде следующего (где MyBooleanSetting - это настройка, которую я определил в своем проекте свойства типа Boolean и области действия User с модификатором доступа по умолчанию по умолчанию):

<CheckBox IsChecked="{Binding Source={x:Static local:MySettings.Default}, Path=MyBooleanSetting, Mode=TwoWay}"
          Content="This is a bound CheckBox."/>

Чтобы убедиться, что настройки действительно сохранены, обязательно позвоните

MySettings.Default.Save()

... где-то в вашем выделенном фрагменте кода (например, в событии Me.Closing для вашего MainWindow.xaml.vb файл).

(кредит Сообщение форума Visual Studio для вдохновения; см. ответ Мухаммеда Сиддики.)

ответил Christopher Kyle Horton 24 FebruaryEurope/MoscowbWed, 24 Feb 2016 18:51:57 +0300000000pmWed, 24 Feb 2016 18:51:57 +030016 2016, 18:51:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132