我正在编写一个xamarin.forms应用程序,我想在按下音量增大和减小按钮时打开“特殊设置”页面。
在xamarin.forms中有没有办法做到这一点?
目前,我已经完成了一个正常运行的事件监听器。现在我需要做的最后一件事是将绑定上下文传递给设置页面。
List<Keycode> _pressedKeys = new List<Keycode>();
public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
{
if(keyCode == Keycode.VolumeDown)
{
_pressedKeys.Add(keyCode);
CheckBoth();
return true;
}
if (keyCode == Keycode.VolumeUp)
{
_pressedKeys.Add(keyCode);
CheckBoth();
return true;
}
return base.OnKeyDown(keyCode, e);
}
public override bool OnKeyUp(Keycode keyCode, KeyEvent e)
{
if (keyCode == Keycode.VolumeDown)
{
_pressedKeys.Remove(keyCode);
return true;
}
if (keyCode == Keycode.VolumeUp)
{
_pressedKeys.Remove(keyCode);
return true;
}
return base.OnKeyUp(keyCode, e);
}
public void ChangePage()
{
((App)App.Current).ChangeScreen(new SettingsPage());
}
public void CheckBoth()
{
try
{
if (_pressedKeys.Contains(Keycode.VolumeDown) &&
_pressedKeys.Contains(Keycode.VolumeUp))
{
Console.WriteLine("It works!");
((App)App.Current).ChangeScreen(new SettingsPage());
_pressedKeys.Clear();
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
解决。我添加了以下一行:
var vm= App.Current.MainPage.BindingContext as MainViewModel;
答案 0 :(得分:0)
我认为您可能必须使用此实现的特定平台,但这是用于处理音量按钮按下的Android实现:
public override bool OnKeyUp(Keycode keyCode, KeyEvent e)
{
if (keyCode == Keycode.VolumeDown)
{
//Dostuff();
return true;
}
if (keyCode == Keycode.VolumeUp)
{
//Dostuff();
return true;
}
return base.OnKeyUp(keyCode, e);
}