2014-05-05 3 views
11

मैं नए विंडोज फोन 8.1 ऑटोकंपलेटबॉक्स नियंत्रण के टेक्स्ट चेंज ईवेंट पर एक कमांड का आह्वान करना चाहता हूं। मैं एमवीवीएम लाइट का उपयोग कर रहा हूँ।विंडोज स्टोर में कमांड व्यवहार को कैसे जोड़ें 8.1 एमवीवीएम एप्लीकेशन

+0

तो तुम Windows 8.1 और विंडोज फोन 8.1 में AutoCompleteBox उपयोग करने में सक्षम थे? मेरा विजुअल स्टूडियो मुझे विंडोज 8 में इसका इस्तेमाल नहीं करने देगा।1, क्योंकि ऑटोकंपलेटबॉक्स को विंडोज फोन 8.1 के लिए लक्षित के रूप में परिभाषित किया गया है। आप उसके आसपास कैसे पहुंचे? – WereWolfBoy

उत्तर

18

नए विंडोज स्टोर में 8.1 ऐप्स एप्लिकेशन में व्यवहार जोड़ने के लिए एक नया एसडीके Behavior SDK है। इसे डिफ़ॉल्ट रूप से जोड़ा नहीं जाता है, आपको अपनी प्रोजेक्ट में यह एक्सटेंशन जोड़ना होगा। नीचे अपनी परियोजना में इस एक्सटेंशन को जोड़ने का तरीका है।

enter image description here

सूची से व्यवहार एसडीके स्थापित करें। enter image description here

अब आप अपने XAML पेज में निम्नलिखित नामस्थान InvokeActionCommand है कि ViewModel

xmlns:i="using:Microsoft.Xaml.Interactivity" 
    xmlns:core="using:Microsoft.Xaml.Interactions.Core" 
    DataContext="{Binding AutoSuggestionBoxExample, Mode=OneWay, Source={StaticResource  Locator}}" 

पर ICommand लागू करने में सक्षम है जोड़ने ...

यहाँ textchange घटना पर आदेश लागू करने के लिए कोड XAML कोड है स्वत: पूर्ण बॉक्स का।

<AutoSuggestBox Text="{Binding SearchText,Mode=TwoWay}" ItemsSource="{Binding       
Suggesstions}"> 
     <AutoSuggestBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding}"/> 
      </DataTemplate> 
     </AutoSuggestBox.ItemTemplate> 
     <i:Interaction.Behaviors> 
      <core:EventTriggerBehavior EventName="TextChanged"> 
       <core:InvokeCommandAction Command="{Binding SearchChanged}">                  
     </core:InvokeCommandAction> 
      </core:EventTriggerBehavior> 
     </i:Interaction.Behaviors> 
    </AutoSuggestBox> 
बाद

ViewModel में मेरी RelayCommand

private RelayCommand _searchChanged; 

    /// <summary> 
    /// Gets the SearchChanged. 
    /// </summary> 
    public RelayCommand SearchChanged 
    { 
     get 
     { 
      return _searchChanged 
       ?? (_searchChanged = new RelayCommand(
            () => 
             { 
              IList<string> sugg = new List<string>(); 
              for (int i = 0; i < 25; i++) 
              { 
               sugg.Add(SearchText + " 1" + i); 
               sugg.Add(SearchText + " 2" + i); 
              } 
              Suggesstions = sugg; 

             })); 
     } 
    } 

आशा इस विस्तार के लिए मदद करता है नीचे दिए गए लिंक देखते हैं। Windows 8.1 Behavior SDK: How to use InvokeAction

+0

मुझे आश्चर्य है कि आपको यहां एक कमांड की आवश्यकता क्यों होगी। आप SearchText की सेट विधि में आइटम्स स्रोत अपडेट कर सकते हैं। नहीं? – tim

+0

RelayCommand नहीं मिला। कोई सुझाव? – Kajzer

+1

@Kajzer यदि आप एमवीवीएम प्रकाश का उपयोग नहीं कर रहे हैं, तो बस अपने विंडोज फोन 8.1 आरटी मोबाइल एप्लिकेशन में एक नया प्रकार का प्रकार (मूल पृष्ठ) जोड़ें। विजुअल स्टूडियो 2013 स्वचालित रूप से आपकी परियोजना में रिलेकॉमैंड जोड़ देगा –

5

चिह्नित उत्तर निश्चित रूप से सही है और इससे मुझे व्यवहार एसडीके खोजने में मदद मिली; हालांकि, व्यवहार एसडीके विस्तार से होने के बजाय वीएस 2015 सीटीपी में पहले से ही स्थापित किया जा रहा है। इसके अलावा, एक यूनिवर्सल अनुप्रयोग व्यवहार एसडीके चीज़ें आवश्यक हैं का उपयोग करने के लिए:

  1. राइट-माउस अपने प्रोजेक्ट की संदर्भ फ़ोल्डर क्लिक करें और चुनें संदर्भ जोड़ें ...संदर्भ प्रबंधक संवाद खुलता है।
  2. विंडोज फोन 8.1 टैब या विंडोज 8.1 बाईं ओर टैब पर क्लिक करें, इस पर निर्भर करता है कि आप किस प्रकार की परियोजना अपडेट कर रहे हैं।
  3. एक्सटेंशन उप-टैब का चयन करें।
  4. दाईं ओर, व्यवहार एसडीके (एक्सएएमएल) देखें।
  5. एक सार्वभौमिक परियोजना के समाधान में, साझा प्रोजेक्ट किसी भी अन्य प्रोजेक्ट की तरह व्यवहार एसडीके का उपयोग कर सकता है; हालांकि, इसमें संदर्भ फ़ोल्डर नहीं हैं, इसलिए आपको पिछले चरणों का उपयोग करके सभी लक्षित प्लेटफ़ॉर्म परियोजनाओं में संदर्भ जोड़ना होगा; उदाहरण के लिए, आपके .Windows और । विन्डोज़फोन परियोजनाएं।

XAML नामस्थान है कि आप को परिभाषित करना होगा अभी भी वही कर रहे हैं:

<UserControl ... 
      xmlns:i="using:Microsoft.Xaml.Interactivity" 
      xmlns:core="using:Microsoft.Xaml.Interactions.Core" 
      ...> 
संबंधित मुद्दे