XLabs 自动完成视图在更新模型后不显示结果



我在尝试让 XLabs 自动完成视图工作时遇到问题,首先尝试搜索命令不会进入视图模型,所以我将其更改为代码隐藏,现在它确实转到视图模型并填充模型,但项目未显示在视图中。视图

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:controls="clr-namespace:XLabs.Forms.Controls;assembly=XLabs.Forms"
             x:Class="Tracking.Views.ScanPage"
             Title="{Binding PageTitle}">
    <ContentPage.Padding>
        <OnPlatform x:TypeArguments="Thickness"
                iOS="10, 20, 10, 10"
                Android="20, 20, 20, 20" />
    </ContentPage.Padding>
    <ContentPage.Resources>
        <ResourceDictionary>
            <DataTemplate x:Key="SugestionItemTemplate">
                <ViewCell Height="60">
                    <ViewCell.View>
                        <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
                            <Label HorizontalOptions="Start"
                                           Text="{Binding Items.text}"
                                           VerticalOptions="Center" />
                        </StackLayout>
                    </ViewCell.View>
                </ViewCell>
            </DataTemplate>
        </ResourceDictionary>
    </ContentPage.Resources>
    <ContentPage.Content>
        <StackLayout VerticalOptions="FillAndExpand"
                 HorizontalOptions="FillAndExpand"
                 Orientation="Vertical"
                 Spacing="1">
            <Label HorizontalOptions="FillAndExpand" x:Name="Username" Text="{Binding user}" />
            <Label Text="Enter document # or scan barcode:" />
            <!-- Also had this but would not bind to viewmodel
            <controls:AutoCompleteView Placeholder="Enter document #..."
                                       HorizontalOptions="FillAndExpand"
                                       ShowSearchButton="False"
                                       SearchCommand="{Binding searchPrOnum}"
                                       SelectedCommand="{Binding selectItem}"
                                       Text="{Binding Item, Mode=TwoWay}"
                                       SuggestionBackgroundColor="White"
                                       SuggestionItemDataTemplate="{StaticResource SugestionItemTemplate}"
                                       Suggestions="{Binding Items, Mode=TwoWay}" /> -->
            <controls:AutoCompleteView Placeholder="Enter document #..."
                                       HorizontalOptions="FillAndExpand"
                                       ShowSearchButton="False"
                                       TextChanged="documentSearch_TextChanged"
                                       Text="{Binding Item, Mode=TwoWay}"
                                       SuggestionBackgroundColor="White"
                                       SuggestionItemDataTemplate="{StaticResource SugestionItemTemplate}"
                                       Suggestions="{Binding Items, Mode=TwoWay}" 
                                       x:Name="documentSearch"/>
            <Button x:Name="scanCode" Text="Scan Barcode" TextColor="White" BackgroundColor="#362C66" Command="{Binding Scanner}" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

背后的代码

public ScanPage() 
{
    InitializeComponent();
    BindingContext = new ScanPageModel();
}
private void documentSearch_TextChanged(object sender, TextChangedEventArgs e)
{
    var vm = new ScanPageModel();
    var val = documentSearch.Text;
    if (val.Length > 2)
        vm?.searchPrOnum(val);
}

视图模型中的函数

public void searchPrOnum(string srch)
{
    if (srch.Length > 2)
    {
        if (isNumeric(srch))
        {
            Items.Clear();    
            string uri = App.apiurl + $"Productionorder/documentsearch/" + srch + "/";    
            using (var client = new HttpClient())
            {
                var response = client.GetAsync(uri);
                var items = JsonConvert.DeserializeObject<List<DocumentSearch>>(response.Result.Content.ReadAsStringAsync().Result);
                var list = (from i in items select new ComboBoxData { text = i.text, value = i.number }).Take(100).ToList();
                Items = new ObservableCollection<ComboBoxData>(list);
            }
        }
    }
    OnPropertyChanged("Items");
}

我发现了问题,它不是与 XLabs 自动完成视图有关,而是我从隐藏的代码调用视图模型,一旦我更改了从视图绑定的调用,我就能够更新模型。问题是属性更改事件处理程序始终为空,并且不会更新模型,我需要在文本更改事件上的条目上添加一个行为,以触发推荐以搜索 PrO。

最新更新