如何在 xamarin 中获得焦点 VisualElement?
How to get focused VisualElement in xamarin?
我必须在 xamarin 的 CarouselPage 中显示超过 10 个 ContentPage,并且在每个 ContentPage 中有许多标签、按钮、条目。那么我当前如何才能聚焦 VisualElement。
我找到了活动 VisualElement.Focused,VisualElement.Unfocused,VisualElement.FocusChangeRequested。
但是none可以帮助我。
虽然 VisualElement 有 Focused 和 UnFocused 事件,但不是所有控件
将响应,因为事件属于超类。也是因为平台不同。
例如,WebView 的 Focused 和 UnFocused 事件将在 iOS 但不在 Android .
在您的情况下,Label 和 Button 在大多数情况下不会调用事件。 条目在编辑模式(输入)时会聚焦,在结束编辑时不聚焦。
因此,如果您确实想要获得当前焦点元素,您可以在 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
定义每个元素的Focused和UnFocused事件
<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" />
我必须在 xamarin 的 CarouselPage 中显示超过 10 个 ContentPage,并且在每个 ContentPage 中有许多标签、按钮、条目。那么我当前如何才能聚焦 VisualElement。
我找到了活动 VisualElement.Focused,VisualElement.Unfocused,VisualElement.FocusChangeRequested。
但是none可以帮助我。
虽然 VisualElement 有 Focused 和 UnFocused 事件,但不是所有控件 将响应,因为事件属于超类。也是因为平台不同。
例如,WebView 的 Focused 和 UnFocused 事件将在 iOS 但不在 Android .
在您的情况下,Label 和 Button 在大多数情况下不会调用事件。 条目在编辑模式(输入)时会聚焦,在结束编辑时不聚焦。
因此,如果您确实想要获得当前焦点元素,您可以在 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
定义每个元素的Focused和UnFocused事件
<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" />