Я делаю приложение Windows 8.1 с подсветкой MVVM для школы. Проблема, с которой я столкнулся, - это свойство Command. Я бы хотел, чтобы объект Movie был нажат, чтобы отправить его на другую страницу и отобразить дополнительную информацию об этом. Однако привязка не выполняется: привязка не выполняется в моем DataContext, а в моей модели Movie для команды. :(Команда не найдена
Сообщение об ошибке:
Error: BindingExpression path error: 'ShowInfoMovieCommand' property not found on 'Howest.NMCT.RottenTomatoes.Models.Movie, Howest.NMCT.RottenTomatoes.Models, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. BindingExpression: Path='ShowInfoMovieCommand' DataItem='Howest.NMCT.RottenTomatoes.Models.Movie, Howest.NMCT.RottenTomatoes.Models, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'; target element is 'Microsoft.Xaml.Interactions.Core.InvokeCommandAction' (Name='null'); target property is 'Command' (type 'ICommand')
Мой XAML код на мой взгляд (Контекст данных устанавливается в верхней части страницы)
DataContext="{Binding GroupedItemsPageViewModel, Source={StaticResource Locator}}"
В ItemTemplate для отображения фильмов
<DataTemplate x:Key="RottenTomatoesMovieItemTemplate">
<Grid HorizontalAlignment="Left" Width="250" Height="230">
<Interactivity:Interaction.Behaviors>
<Core:EventTriggerBehavior EventName="Tapped">
<Core:InvokeCommandAction **Command="{Binding ShowInfoMovieCommand}" CommandParameter="{Binding id}"/>**
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
<Border>
<Image Source="{Binding posters.original}" Stretch="UniformToFill"/>
</Border>
<Grid VerticalAlignment="Bottom" Background="#B2CF4400" Height="50">
<Grid.RowDefinitions>
<RowDefinition Height="18*"/>
<RowDefinition Height="21*"/>
<RowDefinition Height="11*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="24*"/>
<ColumnDefinition Width="101*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="TitleTextblock" Text="{Binding title}" Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextStyle}" Margin="15,0,0,0" Grid.ColumnSpan="2"/>
<Image Source="{Binding ratings.critics_rating, Converter={StaticResource RatingToPhotoConverter}}" Width="15" HorizontalAlignment="Left" Margin="15,0,0,0" Grid.Row="1"/>
<TextBlock Text="{Binding ratings, Converter={StaticResource RatingToPercentFormat}}" Foreground="{StaticResource ListViewItemOverlaySecondaryForegroundThemeBrush}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap" Grid.Column="1" Grid.Row="1" />
</Grid>
</Grid>
</DataTemplate>
Мои ViewModel для страницы (GroupedItemsPageViewModel)
private void ShowInfoMovie(object clickedMovie)
{
Debug.WriteLine(clickedMovie);
}
private RelayCommand<object> _showInfoMovieCommand;
public RelayCommand<object> ShowInfoMovieCommand
{
get
{
if (_showInfoMovieCommand == null)
{
_showInfoMovieCommand = new RelayCommand<object>(
param => this.ShowInfoMovie(param)
);
}
return _showInfoMovieCommand;
}
}