static Parameter CreateParameter(DependencyObject target, string parameter)
{
var actualParameter = new Parameter();
if(parameter.StartsWith("'") && parameter.EndsWith("'"))
actualParameter.Value = parameter.Substring(1, parameter.Length - 2);
else if(MessageBinder.SpecialValues.Contains(parameter.ToLower()) || char.IsNumber(parameter[0]))
actualParameter.Value = parameter;
else if (target is FrameworkElement)
{
var fe = (FrameworkElement)target;
var nameAndBindingMode = parameter.Split(':').Select(x => x.Trim()).ToArray();
var index = nameAndBindingMode[0].IndexOf('.');
RoutedEventHandler handler = null;
handler = (s, e) =>{
BindParameter(
fe,
actualParameter,
index == -1 ? nameAndBindingMode[0] : nameAndBindingMode[0].Substring(0, index),
index == -1 ? null : nameAndBindingMode[0].Substring(index + 1),
nameAndBindingMode.Length == 2 ? (BindingMode)Enum.Parse(typeof(BindingMode), nameAndBindingMode[1], true) : BindingMode.OneWay
);
fe.Loaded -= handler;
};
if ((bool)fe.GetValue(View.IsLoadedProperty))
handler(null, null);
else fe.Loaded += handler;
}
return actualParameter;
}