Вы не описали, как пользователь изменяет целевое свойство зависимости. Можете ли вы просто хранить DependencyProperty
сами, а не string
с? Таким образом, вам не нужно делать никаких преобразований вообще. Псевдо-код:
//just an array of all allowable properties
public DependencyProperty[] AllowedProperties { get; }
//the property the user has chosen
public DependencyProperty ChosenProperty { get; set; }
//called whenever ChosenProperty changes
private void OnChosenPropertyChanged()
{
//redo binding here, using ChosenProperty as the target
}
Редактировать после комментариев : Вы можете использовать DependencyPropertyDescriptor.FromName, чтобы получить DependencyProperty от его имени, если вы знаете тип владельца:
var descriptor = DepedencyPropertyDescriptor.FromName(nameFromExcel, typeof(YourUserControl), typeof(YourUserControl));
var dependencyProperty = descriptor.DependencyProperty;