在昨天的 WP2W8 伦敦活动中,我尝试将现有的 WP7 自定义控件移植到 WinRT(5 月 31 日发布候选版本)
这个自定义控件有一个属性,声明如下:
public IMvxCommand Command
{
get { return (IMvxCommand)GetValue(CommandProperty); }
set { SetValue(CommandProperty, value); }
}
public static readonly DependencyProperty CommandProperty =
DependencyProperty.Register("Command", typeof(IMvxCommand), typeof(IconWithTextMenuItem), new PropertyMetadata(null));
private void OnTap(object sender, CantRememberExactEventArgs e)
{
if (Command == null)
return;
if (CommandParameter != null)
Command.Execute(CommandParameter);
else
Command.Execute();
}
无论我尝试什么,我都无法绑定 - 输出窗口调试绑定错误总是报告绑定无法将类型转换MvxRelayCommand
为IMvxCommand
但是,如果我更改IMvxCommand
为MvxRelayCommand
或ICommand
然后绑定有效。
这里的继承树是MvxRelayCommand
从IMvxCommand
继承自继承的System.Windows.Input.ICommand
——但我确实怀疑 WinRT 可能会ICommand
在后台进行一些时髦的类型重定向。
有没有人了解是否IMvxCommand
可以ICommand
在 WinRT 自定义控件中使用依赖属性?
更新 - 一个示例项目是:https ://github.com/slodge/WinRTInterfaceBindingProblem