Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 为什么同时需要MvvmLight.Command和MvvmLight.Extras.WP7?_Silverlight_Xaml_Windows Phone 7_Mvvm Light - Fatal编程技术网

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"
>