我有一个元素,我想成为高亮显示时,导航到一个D-垫,并响应一个“进入”按钮。我以为我可以通过一个集中的元素来完成这个任务,并试图设置我的ContentView来处理这样的交互。
ContentView类继承自VisualElement,并具有一个Focus()方法。文档指出,要使Focus()方法工作,“元素必须能够接收焦点”。
我如何使一个元素“能够接受焦点”?在UWP或Tizen中,这个简单的例子似乎不起作用。选项卡,点击,箭头键,以编程方式设置焦点.没有什么可以将IsFocused设置为true,而且我的回调也从未被调用过。
using System;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace MyProject.Components
{
public class FocusMe : ContentView
{
public FocusMe ()
{
Content = new StackLayout {
Children = {
new Label { Text = "Welcome to Xamarin.Forms!" }
}
};
Focused += FocusMe_Focused;
Task.Run(async () => {
await Task.Delay(5000);
Focus(); // false
_ = IsFocused; // false
});
}
private void FocusMe_Focused(object sender, FocusEventArgs e)
{
// never called
}
}
}发布于 2022-02-24 05:56:07
ContentView能接收焦点吗?
基于测试,ContentView将不会接收Focused事件。但是,Frame布局可以接收焦点事件,而框架继承自ContentView,您可以使用Frame替换。请注意,您需要在其中放置可聚焦的控件,如按钮。
发布于 2022-02-25 01:31:00
如果您在Tizen上工作,那么请检查TV.UIControls,它是用于电视应用程序的扩展库。
如果要对视图上的关键事件作出反应,我建议在TV.UIControls上使用TV.UIControls视图--它基于ContentView,但工作起来像按钮
这是一个指南https://samsung.github.io/Tizen.TV.UIControls/guides/ContentButton.html
https://stackoverflow.com/questions/71241021
复制相似问题