首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XLabs自动完成视图在更新模型后不显示结果

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

Stack Overflow用户
提问于 2017-10-18 21:52:37
回答 1查看 72关注 0票数 0

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

代码语言:javascript
复制
<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>

背后的代码

代码语言:javascript
复制
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);

}

视图模型中的函数

代码语言:javascript
复制
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");
}
EN

回答 1

Stack Overflow用户

发布于 2017-10-19 03:38:26

我发现了问题,不是XLabs自动完成视图的问题,而是我从后台代码调用视图模型的事实,一旦我将调用从视图更改为bind,我就能够更新模型。问题是PropertyChangedEventHandler总是空的,这不会更新模型,我需要在Entry on text changed事件上添加一个行为,以激发搜索PrO的commend。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46811844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档