如何在 xamarin 中获得焦点 VisualElement?

How to get focused VisualElement in xamarin?

我必须在 xamarin 的 CarouselPage 中显示超过 10 个 ContentPage,并且在每个 ContentPage 中有许多标签、按钮、条目。那么我当前如何才能聚焦 VisualElement。

我找到了活动 VisualElement.Focused,VisualElement.Unfocused,VisualElement.FocusChangeRequested

但是none可以帮助我。

虽然 VisualElementFocusedUnFocused 事件,但不是所有控件 将响应,因为事件属于超类。也是因为平台不同。

例如,WebViewFocusedUnFocused 事件将在 iOS 但不在 Android .

在您的情况下,LabelButton 在大多数情况下不会调用事件。 条目在编辑模式(输入)时会聚焦,在结束编辑时不聚焦。

因此,如果您确实想要获得当前焦点元素,您可以在 ContentPage 中定义一个 属性。

public object FocusedElement;
private void FocusEvent(object sender, FocusEventArgs e)
{
   FocusedElement = sender; //sender here is the element , like label or entry
}

private void UnfocusEvent(object sender, FocusEventArgs e)
{
   FocusedElement = null;
}

在xaml

定义每个元素的FocusedUnFocused事件

 <Label Text="Welcome to Xamarin.Forms!" 
           HorizontalOptions="Center"
               Focused="FocusEvent" Unfocused="Label_Unfocused"
           VerticalOptions="CenterAndExpand" />


        <Button  Focused="FocusEvent" Unfocused="UnfocusEvent" Text="111"/>

        <Entry   Focused="FocusEvent" Unfocused="UnfocusEvent" HeightRequest="50"  WidthRequest="100" />