В конвертер (в привязку) нужно передать ссылку на объект, в котором два нужных свойства. Если свойство находится в текущем датаконтексте, значит, привязка без артибута Path {Binding Converter={StaticResource MyConv}} передаст в конвертер ссылку на текущий датаконтекст. Теперь его можно использовать в конвертере для получения нужного свойства.
public class MyConv : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var vm = value as MyViewModel;
if (vm == null) return Binding.DoNothing;
var config = System.Configuration.ConfigurationManager.AppSettings["MySetting"];
return config != null && config.ToLower() == "first"
? vm.FirstProperty
: vm.SecondProperty;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Binding.DoNothing;
}
}
А можно хранить данные где-то ещё - в статическом свойстве, в синглтоне, получить через IoC, создать объект класса, который умеет получать нужное значение. Тогда в таком конвертере не обязательно использовать переданное значение в аргументе value.