Вы можете сделать много вещей, например, вы можете добавить несколько свойств в ваш конвертер, которые указывают на метод.Это могут быть, например, TargetType
, TargetObject
& MethodName
, тогда вы можете - указав MethodName
и любое другое свойство - заставить преобразователь вызывать метод для TargetObject
или статически.
например, что-то вроде этого:
//<Property declarations>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool staticCall = TargetObject == null;
var types = new Type[] { value.GetType() };
var args = new object[] { value };
MethodInfo method;
if (staticCall)
{
method = TargetType.GetMethod(MethodName, types);
}
else
{
method = TargetObject.GetType().GetMethod(MethodName, types);
}
var score = method.Invoke(TargetObject, args);
//Convert score
}
(Как и во всех отрывочных фрагментах, не бездумно копируйте и вставляйте это, возможно, это отстой)
<vc:MyConverter x:Key="ScoreConverter"
TargetType="{x:Type local:MyStaticClass}"
MethodName="MyStaticMethod"/>