HY,
我正在开发一个带有大量UWP条目和按钮的xamarin PCL项目。对于我在自定义渲染器中添加的条目,使用keydown和keyup函数来检测Enter按下。结果它转到下一个UI元素。 对于一个按钮,我需要相同的检测,但在渲染器中没有进入功能键盘或keydown。
那么在执行原始命令之前如何让按钮检测到按下按钮?
这是我实施的代码。
public class CustomButtonRenderer : ButtonRenderer
{
public CustomButtonRenderer()
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)
{
Xamarin.Forms.Button appButton = (Xamarin.Forms.Button)Element;
base.OnElementChanged(e);
if (Control != null && appButton != null)
{
Control.KeyUp += Control_KeyUp;
Control.KeyDown += Control_KeyDown;
}
}
private void Control_KeyDown(object sender, KeyRoutedEventArgs e)
{
}
private void Control_KeyUp(object sender, KeyRoutedEventArgs e)
{
Xamarin.Forms.Button appButton = (Xamarin.Forms.Button)Element;
switch (e.Key)
{
case (Windows.System.VirtualKey.Enter):
{
FocusManager.TryMoveFocus(FocusNavigationDirection.Next);
break;
}
}
}
}
答案 0 :(得分:0)
您需要将KeyRoutedEventArgs.Handled属性设置为true
。这应该按照你的要求做到:
private void Control_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == Windows.System.VirtualKey.Enter)
{
FocusManager.TryMoveFocus(FocusNavigationDirection.Next);
e.Handled = true;
}
}