3 ответов:
во-первых, вам нужно добавить пользовательское пространство имен 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и Scope доUser
решение выше действительно работает, но я нахожу его довольно многословным... вместо этого вы можете использовать пользовательское расширение разметки, которое можно использовать следующим образом:
<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/
ответ@CSharper не работал для моего приложения WPF, закодированного в VB.NET (не C#, в отличие от, по-видимому, 99,999% других приложений WPF), так как я получил постоянную ошибку компилятора, жалующуюся на то, что
Settingsне удалось найти вMyApp.Propertiesпространство имен, которое не исчезнет даже после перестройки.что работало вместо этого для меня, после долгих поисков в интернете, было вместо этого использовать
localпространство имен XAML, созданное по умолчанию в главном окне моего приложения XAML файл:<Window <!-- Snip --> xmlns:local="clr-namespace:MyApp" <!-- Snip --> ><!-- Snip --></Window>...и привязать к моим настройкам через него, используя что-то вроде следующего (где
MyBooleanSettingэто параметр, который я определил в свойствах проекта типаBooleanи область пользователя, с модификатором доступа к другу по умолчанию):<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.vbfile).(кредит это сообщение на форуме Visual Studio для вдохновения; см. ответ Мухаммад Сиддики.)
Comments