É fácil usar um ficheiro de settings numa aplicação WPF para guardar as preferências do utilizador. Depois é possível fazer o bind dessas preferências a controlos XAML.
Vamos supor que querem guardar o título de uma janela nas preferências. Criam uma propriedade MainWindowTitle e depois fazem o bind ao controlo XAML da seguinte maneira:
<Window
x:Class="MyApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:myapp="clr-namespace:MyApplication"
xmlns:properties="clr-namespace:MyApplication.Properties"
Title="{Binding Source={x:Static properties:Settings.Default}, Path=MainWindowTitle, Mode=TwoWay}">
</Window>
Bastante simples, certo? Excepto que é muito palavroso. É possível ser mais sucinto criando uma extensão markup da seguinte forma:
using System.Windows.Data;
namespace MyApplication
{
public class SettingBindingExtension : Binding
{
public SettingBindingExtension()
{
Initialize();
}
public SettingBindingExtension(string path)
: base(path)
{
Initialize();
}
private void Initialize()
{
this.Source = Properties.Settings.Default;
this.Mode = BindingMode.TwoWay;
}
}
}
E depois no vosso XAML, podem fazer o bind assim:
<Window
x:Class="MyApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:myapp="clr-namespace:MyApplication"
Title="{myapp:SettingBinding MainWindowTitle}">
</Window>
Sintaxe mais curta, facilita a leitura e a manutenção.