在我的申请中,我有以下情况:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:conv="clr-namespace:NumericTextBoxTest.Converters;assembly=NumericTextBoxTest"
xmlns:numericTextBox="clr-namespace:Syncfusion.SfNumericTextBox.XForms;assembly=Syncfusion.SfNumericTextBox.XForms"
x:Class="NumericTextBoxTest.MainPage">
<ScrollView>
<StackLayout>
<Entry/>
<Entry/>
<Entry/>
<Entry/>
<Entry/>
<Entry/>
<Entry/>
<Entry/>
<Entry/>
<Entry/>
</StackLayout>
</ScrollView>
</ContentPage>
现在,如果我点击底部的空白处(条目下方),即ScrollView
,则ScrollView
中的第一个Entry
将获得焦点。
非常烦人,如果我正在改变第一个Entry
上的值,并试图取消对Entry
的聚焦来设置值。
有可能阻止这种行为吗?
5条答案
按热度按时间gt0wga4j1#
现在,如果我点击底部的空白区域(条目下方),即ScrollView,ScrollView中的第一个条目将获得焦点。
在UWP中,当点击
StackLayout
时,系统将搜索StackLayout
中的每个元素,直到第一个可以关注的元素。作为解决此问题的解决方案,您可以在StackLayout
的顶部放置一个不可见的按钮。当点击
StackLayout
时,按钮将被聚焦。Entry
将不会被聚焦hec6srdp2#
最后,我实际上最终覆盖了默认的
ScrollViewRenderer
,正如这条评论中提到的:https://github.com/microsoft/microsoft-ui-xaml/issues/597#issuecomment-513804526
我在UWP上的
ScrollViewRenderer
看起来像这样:j5fpnvbx3#
如果我点击底部的空白处(条目下面)
你可以拉伸你的stacklayout,然后它将接收焦点而不是scrollview。
您还可以为stacklayout设置backgroundcolor,以确保stacklayout被拉伸
sauutmhj4#
[更新]
我刚刚发现,我真的需要完全qulify我的自定义
ScrollViewRenderer
的命名空间为ExportRenderer
属性的Target
参数时,类具有相同的名称从Xamarin窗体。现在它正按预期工作
[原文]
我试着实现了User1发布的CustomRenderer,但它似乎没有在UWP项目中使用。虽然我在页面上有一个
ScrollView
,但ScrollViewRenderer
的构造函数从未被调用。如果我从
ScrollView
派生一个CustomScrollView
,并让渲染器应用于CustomScrollView
,它会被使用,解决方案按预期工作,但似乎我无法覆盖所有ScrollViews的渲染器。有没有提示为什么渲染器没有被用来替换XF的默认内置ScrollViewRenderer?(顺便说一句,我使用的是XF5.0.0.1874)
jdgnovmf5#
在MAUI应用程序中,添加假按钮的解决方案效果很好。我也不太喜欢它,但它是快速简单的解决方案,无需从本主题的另一条评论中找出ScrollViewRenderer。