Когда вы используете {x: bind} для привязки свойства ButtonBase.Command , вы должны привязать команду, которая будет вызываться при нажатии этой кнопки.В вашем коде вы связываете статический метод, который возвращает команду, но этот статический метод принадлежит самому типу, а не конкретному объекту.
Чтобы устранить эту ошибку, вы должны удалить коды, которые устанавливают экземпляр объекта контекста данных страницы в xaml.То есть, чтобы удалить следующий код,
<Page.DataContext>
<local:MainPage />
</Page.DataContext>
Если вы хотите связать команду для работы с MediaElement
, вы должны поместить в нее код операции, вот пример,
MainPage.xaml,
<StackPanel>
<MediaElement Name="mp" Width="800" Height="400" Source="ms-appx:///Assets/video.mp4"/>
<Button VerticalAlignment = "Bottom" Margin = "10,0,0,10" Command = "{x:Bind local:MainPage.Pause(mp)}"
HorizontalAlignment = "Left" Height = "30" Width = "100">Pause</Button>
</StackPanel>
MainPage.xaml.cs и команда,
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
public static Command Pause(MediaElement element)
{
//element.Pause();
return new Command(s => { element.Pause(); },true);
}
}
public class Command : ICommand
{
private Action<object> action;
private bool canExecute;
public event EventHandler CanExecuteChanged;
public Command(Action<object> action,bool canExecute)
{
this.action = action;
this.canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
return canExecute;
}
public void Execute(object parameter)
{
action(parameter);
}
}