2017-10-18 68 views
0

我有一个问题试图让XLabs自动完成视图工作,首先尝试搜索命令不会去viewmodel,所以我改变它后面的代码,现在它确实去视图模型和填充模型,但项目不显示在视图上。 视图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"); 
} 

回答

0

我找到了问题的视图模型的函数的代码,这是不符合XLabs autocompleteview,这是事实我从背后的代码调用视图模型,一旦我改变了调用绑定的视图,我可以更新模型。问题是PropertyChangedEventHandler始终为空,并且不会更新模型,我需要在Entry上对文本更改事件添加行为以激发搜索PrO的推荐。

相关问题