可能重复:
Bind to a method in WPF?
是否有一种简单的方法可以在XAML中使用我的代码来访问方法?
我见过使用ObjectDataProvider的解决方案,但据我了解,他们创建了一个给定类型的新实例并调用了该对象的方法。这对我来说没用,因为我需要调用我的类的实际代码(datacontext对于方法很重要!)...
Route.xaml.cs: public string GetDifficultyName(int id);
Route.xaml: Displays a list of routes
每个路由都有一个属性“DiffId”,必须将其传递给上面的方法,并且必须将结果设置为文本框的值 - >将id解析为人类可读的描述。
答案 0 :(得分:1)
执行此操作的一种简单方法是将ValueConverter
实例公开为Window
(或Control
或其他)中的资源,该资源已在您的代码隐藏中正确初始化以便调用进入你需要的方法。
例如:
[ValueConversion(typeof(object), typeof(string))]
public class RouteDifficultyNameConverter : IValueConverter
{
private readonly IMyMethodProvider provider;
public RouteDifficultyNameConverter(IMyMethodProvider provider)
{
this.provider = provider;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return provider.GetDifficultyName((int)value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
当然,这不是一个完全正确的转换器,但你明白了。
在你的代码隐藏构造函数中:
this.Resources.Add("routeDifficultyConverter",
new RouteDifficultyNameConverter(this));
this.InitializeComponent();