Можно непосредственно связать со статическим объектом, созданным Visual Studio.
В Вашем объявлении окон добавьте:
xmlns:p="clr-namespace:UserSettings.Properties"
, где UserSettings
пространство имен приложения.
Тогда можно добавить привязку к корректной установке:
<TextBlock Height="{Binding Source={x:Static p:Settings.Default},
Path=Height, Mode=TwoWay}" ....... />
Теперь можно сохранить настройки на пример при закрытии приложения:
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
Properties.Settings.Default.Save();
base.OnClosing(e);
}
Самый легкий путь состоял бы в том, чтобы связать с объектом, который представляет Ваши параметры настройки приложения как свойства или включать тот объект как StaticResource и связывать с этим.
Другое направление, которое Вы могли взять, является созданием Ваше собственное Расширение Разметки , таким образом, можно просто использовать PropertyName = "{ApplicationSetting SomeSettingName}". Для создания пользовательского расширения разметки, необходимо наследовать MarkupExtension и украсить класс атрибут MarkupExtensionReturnType. John Bowen имеет сообщение при создании пользовательского MarkupExtension, который мог бы сделать процесс немного более четким.
Крис, я не уверен, что это - лучший способ связать ApplicationSettings, но это - то, как я сделал это в Остроумный .
1) Создают свойство зависимости для установки, которую Вы хотите связать в window/page/usercontrol/container. Это - случай, у меня есть пользователь, устанавливающий для игры звуков.
public bool PlaySounds
{
get { return (bool)GetValue(PlaySoundsProperty); }
set { SetValue(PlaySoundsProperty, value); }
}
public static readonly DependencyProperty PlaySoundsProperty =
DependencyProperty.Register("PlaySounds", typeof(bool), typeof(Options),
new FrameworkPropertyMetadata(false, new PropertyChangedCallback(OnPlaySoundsChanged)));
private static void OnPlaySoundsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
Properties.Settings.Default.PlaySounds = (bool)args.NewValue;
Properties.Settings.Default.Save();
}
2) В конструкторе, инициализируйте значение свойства для соответствия параметрам настройки приложения
PlaySounds = Properties.Settings.Default.PlaySounds;
, 3) Связывают свойство в XAML
<CheckBox Content="Play Sounds on new Tweets" x:Name="PlaySoundsCheckBox" IsChecked="{Binding Path=PlaySounds, ElementName=Window, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
, который можно загрузить полное Остроумный источник , чтобы видеть его в действии или просмотреть просто эти код для окна настроек .
Также читайте этот статья о том, как она сделана в BabySmash
, который только необходимо поддержать, Настройки с ДЕЛАЮТ (Как пример Alan) при необходимости в уведомлении об изменении! при привязке с ПОСТЕПЕННО будет также работать класс Настроек!