Windows Phone 8 プロジェクトで GalaSoft - MVVM Light Toolkit を使用すると、奇妙な問題が発生しました。突然(いくつかのものをマージした後)、すべての EventToCommand 呼び出しが機能しなくなりました。彼らは以前働いていました。既に MvvmLight ツールキットを削除して Nuget で再度参照しようとしましたが、結果は同じままです。
一例:
MainMenuPage.xaml
<phone:PhoneApplicationPage
...
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:commands="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP8"
....>
<phone:PhoneApplicationPage.DataContext >
<Binding Source="{StaticResource MainMenuViewModel}"/>
</phone:PhoneApplicationPage.DataContext>
<!-- catch back key press -->
<i:Interaction.Triggers>
<i:EventTrigger EventName="BackKeyPress">
<commands:EventToCommand
Command="{Binding BackKeyPressCommand}"
PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
MainMenuViewModel.cs
// back key press command
public RelayCommand<object> BackKeyPressCommand { get; set; }
public MainMenuViewModel()
{
BackKeyPressCommand = new RelayCommand<object>(
BackKeyPress,
(o) => true
);
...
}
private void BackKeyPress(Object o)
{
// handle back key press
}
これは以前は完全に機能していましたが、BackKeyPress(Object o) メソッドが呼び出されることはなくなりました。これは、すべての EventToComamnd 呼び出しで発生します。
xmlns タグを削除すると、Resharper はこれを追加することを提案します。
xmlns:command="http://www.galasoft.ch/mvvmlight"
その結果:
「EventToCommand」という名前は名前空間「 http://www.galasoft.ch/mvvmlight」に存在しません
誰かが同様の問題に遭遇したか、何がこれを引き起こしたのか考えていますか?