我试图绑定到方法的输出。现在我已经看到了这样的例子,ObjectDataProvider
但是这个问题是 ObjectDataProvider 创建了一个新的对象实例来调用该方法。我需要在当前对象实例上调用的方法。我目前正在尝试让转换器工作。
设置:
Class Entity
{
private Dictionary<String, Object> properties;
public object getProperty(string property)
{
//error checking and what not performed here
return this.properties[property];
}
}
我对 XAML 的尝试
<local:PropertyConverter x:Key="myPropertyConverter"/>
<TextBlock Name="textBox2">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource myPropertyConverter}"
ConverterParameter="Image" >
<Binding Path="RelativeSource.Self" /> <!--this doesnt work-->
</MultiBinding>
</TextBlock.Text>
</TextBlock>
我的代码在后面
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string param = (string)parameter;
var methodInfo = values[0].GetType().GetMethod("getProperty", new Type[0]);
if (methodInfo == null)
return null;
return methodInfo.Invoke(values[0], new string[] { param });
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotSupportedException("PropertyConverter can only be used for one way conversion.");
}
我的问题是我似乎无法将当前实体传递给转换器。所以当我尝试使用反射来获取 getProperty 方法时,我没有什么可操作的
谢谢,斯蒂芬