是的,所以这里是场景:
我创建了一个名为" DiaryPage"从Canvas继承
我创建了一个名为" DiaryControl"的用户控件。包含" DiaryPage"元素。页面的高度,宽度等都是数据绑定,如下所示:
Width="{Binding DataContext.Info.Booktype, ConverterParameter=CoverWidth, Converter={StaticResource BookTypeToDimentionsConverter}, FallbackValue=490, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType=UserControl}}"
现在,它在pc上完美运行,运行silverlight 5但是在mac上运行的相同代码会产生以下异常:
在System.Windows.Application.LoadComponent(对象组件,Uri resourceLocator)上
在Life.Views.Book.Framework.DiaryControl.InitializeComponent()
at Life.Views.Book.Framework.DiaryControl..ctor()找不到方法:' Void System.Windows.FrameworkElement.add_DataContextChanged(System.Windows.DependencyPropertyChangedEventHandler)'。
在System.Windows.Application.LoadComponent(对象组件,Uri resourceLocator)
在Life.Views.Book.Framework.DiaryControl.InitializeComponent()
at Life.Views.Book.Framework.DiaryControl..ctor()在类型' Life.Views.Book.Framework.DiaryPageControl'上调用构造函数。与指定的绑定约束匹配引发异常。
在类型' Life.Views.Book.Framework.DiaryPageControl'上调用构造函数。与指定的绑定约束匹配引发异常。 [行:327位置:28]
[第327行]对应于上面指定的宽度绑定
有什么想法吗?
在我的DiaryPage类中,我有一个像这样附加的datacontextchanged侦听器:
DataContextChanged += new DependencyPropertyChangedEventHandler(DiaryPageControl_DataContextChanged);
void DiaryPageControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if(DataContext != null && DataContext.GetType()== typeof(Page))
LoadContent();
}
正如我所说的那样,在Windows上运行了一个魅力(测试了5个电脑),但在Mac上抛出异常(好吧,我已经尝试过的那个)
答案 0 :(得分:0)
Silverlight 应该在Mac和Windows PC上的工作方式完全相同。这听起来像个错误。您可能希望在Microsoft Connect网站上进行举报。要解决您的直接问题,您只需要做一些探索性工作,找到不适合您的框架部分并避免它!
另一点......确保Mac安装了最新的Silverlight版本,你在那里使用了一个相对较新的框架功能。