Silverlight 为什么同时需要MvvmLight.Command和MvvmLight.Extras.WP7?
我有(注意Silverlight 为什么同时需要MvvmLight.Command和MvvmLight.Extras.WP7?,silverlight,xaml,windows-phone-7,mvvm-light,Silverlight,Xaml,Windows Phone 7,Mvvm Light,我有(注意Extras.WP7): …但是当我这样做时,我得到了“在类型'ButtonBaseExtensions'中找不到可附加属性'Command'”错误 我发现我还必须为assembly=GalaSoft.MvvmLight.WP7添加一个名称空间,如下所示: <phone:PhoneApplicationPage.Resources> <i:EventTrigger x:Key="KeyPadButtonTrigger" EventName="Click">
Extras.WP7
):
…但是当我这样做时,我得到了“在类型'ButtonBaseExtensions'中找不到可附加属性'Command'”
错误
我发现我还必须为assembly=GalaSoft.MvvmLight.WP7
添加一个名称空间,如下所示:
<phone:PhoneApplicationPage.Resources>
<i:EventTrigger x:Key="KeyPadButtonTrigger" EventName="Click">
<cmd:EventToCommand Command="{Binding Path=KeyPadButtonCommand}" CommandParameter="{Binding ElementName=Self, Path=Content }" />
</i:EventTrigger>
</phone:PhoneApplicationPage.Resources>
<Button x:Name="button1"
cmd:ButtonBaseExtensions.Command="{Binding KeyPadButtonCommand}"
cmd:ButtonBaseExtensions.CommandParameter="{Binding ElementName=button1, Path=Content }"/>
<phone:PhoneApplicationPage
xmlns:cmdxtras="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP7"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.WP7"
>
注意,我有xmlns:cmdxtras
和xmlns:cmd
。如果我只有一个或另一个,事情就不会发生
这看起来真的很笨拙,与我认为其他人的建议不符。为什么两者都需要?MvvmLight.Extras.WP7程序集提供了一个特定于WP7的程序集,其中包含“Extras”,即您可能想要或不想要使用的东西,其中包括EventToCommand。MvvmLight.WP7程序集是特定于WP7的程序集,提供核心功能,包括ButtonBaseExtensions。在您的场景中,这两个类恰好位于同一名称空间中,因为它们都与命令相关。不幸的是,.NET Framework没有提供从两个不同的程序集引用相同名称空间的机制,因此需要创建重复的xmlns定义
从长远来看,可以在两个程序集中使用XmlnsDefinitionAttribute和XmlnsPrefixAttribute,如中所述,这使相同的xmlns和前缀与两个程序集中的相同命名空间相关联,但这是Laurent的决定,或者对于要提供给项目的参与者:)MvvmLight.Extras.WP7程序集提供了一个特定于WP7的程序集,其中包含“Extras”,即您可能想要或不想要使用的东西,其中包括EventToCommand。MvvmLight.WP7程序集是特定于WP7的程序集,提供核心功能,包括ButtonBaseExtensions。在您的场景中,这两个类恰好位于同一名称空间中,因为它们都与命令相关。不幸的是,.NET Framework没有提供从两个不同的程序集引用相同名称空间的机制,因此需要创建重复的xmlns定义
从长远来看,可以在两个程序集中使用XmlnsDefinitionAttribute和XmlnsPrefixAttribute,如中所述,这使相同的xmlns和前缀与两个程序集中的相同命名空间相关联,但这是Laurent的决定,或者对于向项目提供的参与者:)存在附加程序集,因为EventToCommand需要对System.Windows.Interactive的引用,而ButtonBaseExtensions、RelayCommand、Messenger等不需要它。如果可以避免的话,有些人不愿意添加对程序集的引用。因此,对于那些不需要EventtoCommand的人,他们只使用基本程序集,而其他想要整个程序的人可以添加额外的程序 干杯,
Laurent存在Extras程序集,因为EventToCommand需要对System.Windows.Interactive的引用,而ButtonBaseExtensions、RelayCommand、Messenger等不需要它。如果可以避免的话,有些人不愿意添加对程序集的引用。因此,对于那些不需要EventtoCommand的人,他们只使用基本程序集,而其他想要整个程序的人可以添加额外的程序 干杯, 洛朗
<phone:PhoneApplicationPage
xmlns:cmdxtras="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP7"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.WP7"
>