我有这个输入字段,用户将输入数据,然后我想在每次文本更改时捕获,然后查询数据库是否有来自用户输入的数据匹配然后显示结果。
<StackLayout Grid.Row="0" Grid.Column="0" Padding="16,13,16,9">
<StackLayout Orientation="Horizontal" Padding="10,0">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapVINRecognizer"/>
</StackLayout.GestureRecognizers>
<local:CustomLabel x:Name="VINLabel" Text="VIN" TextColor="#3680a4" Style="{StaticResource AccordTitleStyle}"/>
<Image x:Name="VINImage" Source="arrow_down.png"/>
</StackLayout>
<StackLayout x:Name="VINAccordion" IsVisible="True" Padding="0,5,0,16" Spacing="10">
<StackLayout Spacing="0" Orientation="Horizontal">
<local:CustomEntry x:Name="VINText" Placeholder="17 CHARACTERS" HorizontalOptions="FillAndExpand"/>
</StackLayout>
<local:CustomLabel Style="{StaticResource AccordLabelStyle}">
<local:CustomLabel.Text>
If the motor has a VIN, enter the VIN. A VIN is the 17 character identifier recorded on most vehicles built after 1998
</local:CustomLabel.Text>
</local:CustomLabel>
<local:CustomButton Clicked="OnClickSearchBtn" ClassId="vin"/>
</StackLayout>
</StackLayout>
用户输入文本:
<StackLayout Spacing="0" Orientation="Horizontal">
<local:CustomEntry x:Name="VINText" Placeholder="17 CHARACTERS" HorizontalOptions="FillAndExpand"/>
</StackLayout>
每次更改时如何捕获文本?如果之后有结果,我将如何显示?你准备好了TextChanged事件,但我不确定如何使用它。它适用于这种情况吗?在此先感谢您的帮助。
答案 0 :(得分:1)
检查MVVM方法,对条目文本属性使用绑定,然后进行规则!
答案 1 :(得分:1)
如果您绑定(使用VM),则可以绑定到Text property Entry,否则您可以使用TextChanged Event。
由于您说您需要在每次文本更改时查询数据库,请确保将其作为Async方法运行,以确保未阻止主线程(UI线程)。获取结果后,您可以通过使用Device.BeginInvokeOnMainThread方法从UI线程进行必要的更改来更新UI。
例如:
VINText.TextChanged += async (s,e) =>
{
//Long running task - query the db
await FetchResultFromDatabase();
Device.BeginInvokeOnMainThread (() => {
// update UI
label.Text = "Async operation completed";
});
}