2011-11-13 10 views
6

मैं एमवीवीएम के लिए नया हूं, और WPF के लिए बिल्कुल नया हूं। वास्तव में कुछ महीनों पहले मैंने प्रोग्रामिंग शुरू कर दी थी। एमवीवीएम वास्तव में बाध्यकारी अवधारणा के साथ मेरे सिर को डीएनजी कर रहा है, और मैं बस कुछ दिनों के लिए कोशिश कर रहा हूं बस एक एप्लिकेशन बनाने के लिए जो आपको एक सूची बॉक्स से किसी आइटम का चयन करने की अनुमति देता है, और जब आप ऐड बटन पर क्लिक करते हैं तो चयनित आइटम होना चाहिए एक नई सूची में सहेजा गया। दूसरा सूची बॉक्स नवीनतम आइटम जोड़े गए हैं, और आप एक आइटम का चयन कर सकते हैं और इसे किसी अन्य बटन का उपयोग करके हटा सकते हैं। औपचारिक रूप से मैं क्लिक इवेंट के लिए जाऊंगा और बहुत कम तरीकों से अपने कोडबेंड को सजाने के लिए तैयार हूं, लेकिन मैं वास्तव में सीखना चाहता हूं कि बाइंडिंग का उपयोग करके यह सब कैसे करें और कोई कोडबेइंड नहीं। मैं किसी भी मदद के लिए extremly खुशी होगी, और कृपया याद रखें कि मैं इस के लिए नया हूँ और मैं वास्तव में यह संभव के रूप में सरल रखना चाहते हैं :) प्रकार के साथ डेनिएलाबिना किसी कोडबेंड के बटन पर क्लिक करके मैं सूची सूची से आइटम्स को किसी सूची में कैसे जोड़ सकता हूं?

<WrapPanel HorizontalAlignment="Center" Margin=" 10"> 
    <ListBox x:Name="Firstbox" 
      Width="100" 
      ItemsSource="{Binding FoodList}" 
      DisplayMemberPath="Name" > 
    </ListBox> 
    <Button Margin="10 >Select</Button> 
    <ListBox Width="100"></ListBox> 

निजी सूची का संबंध _foodList;

public List<FoodItem> FoodList 
    { 
     get { return _foodList; } 
     set { _foodList = value; } 
    } 

    private List<FoodItem> _newFoodList; 

    public List<FoodItem> NewFoodList 
    { 
     get { return _newFoodList; } 
     set { _newFoodList = value; } 
    } 

    public MainViewModel() 
    { 
     InitializeCommands(); 
     GetFood(); 
    } 
    private void GetFood() 
    { 
     FoodList = new List<FoodItem>() 
     { 
      new FoodItem() {Name="Applepie"}, 
      new FoodItem() {Name="Scones"} 
     }; 
    } 
+0

पोस्ट अपने वर्तमान कोड –

+1

इतना कोड नहीं हैं :(है यह नहीं पता कि यह कैसे करें :( –

+0

यदि मैं सुझाव दे सकता हूं कि आप एमवीवीएम के बारे में एक पुस्तक पढ़ सकते हैं और फिर आप इसे आसानी से करने में सक्षम होंगे। लेकिन इस कार्य को पूरा करने के लिए अभी आपको मदद करने के लिए आपको आईसीएमओंड्स को लागू करना होगा और फिर उन्हें अपने बटन कमांड प्रॉपर्टी से जोड़ना होगा। यह करना बहुत आसान है और आप मदद करने के लिए कई उदाहरण पा सकते हैं। – BigL

उत्तर

7
  • पहले, आप, ObservableCollection रों साथ List रों को बदलने के लिए जब नए आइटम जोड़ रहे हैं ताकि यूआई का पता लगा सकते की जरूरत है।

    private FoodItem _selectedItem; 
    public FoodItem SelectedItem 
    { 
        get { return _selectedItem;} 
        set 
        { 
         _selectedItem = value; 
         OnPropertyChanged("SelectedItem"); 
        } 
    } 
    
  • बाँध इस संपत्ति के लिए 1 ListBox की SelectedItem संपत्ति:

    <ListBox Width=" 100" x:Name="Firstbox" 
         ItemsSource="{Binding FoodList}" 
         DisplayMemberPath="Name" 
         SelectedItem="{Binding SelectedItem}" /> 
    
  • बाँध अपने 2 ListBoxNewFoodList संपत्ति

  • को
  • अपने ViewModel करने के लिए एक SelectedItem संपत्ति जोड़ें

  • एक कॉम बनाएं और अपने ViewModel में:

    private DelegateCommand _addItemCommand; 
    public ICommand AddItemCommand 
    { 
        get 
        { 
         if (_addItemCommand == null) 
         { 
          _addItemCommand = new DelegateCommand(AddItem); 
         } 
         return _addItemCommand; 
        } 
    } 
    
    void AddItem() 
    { 
        if (SelectedItem != null) 
         NewFoodList.Add(SelectedItem); 
    } 
    
  • और अंत में, AddItemCommand संपत्ति के लिए बटन के Command संपत्ति बाँध:

    <Button Margin="10" Command="{Binding AddItemCommand}" >Select</Button> 
    
+0

आपकी मदद के लिए बहुत बहुत धन्यवाद! मुझे मिलता है: AddItem विधि पर "ऑब्जेक्ट रेफरेंस ऑब्जेक्ट के उदाहरण पर सेट नहीं है", क्या आपके पास कोई idae क्यों है? –

+1

जब मैं डीबग करता हूं तो मैं देख सकता हूं कि एक आइटम चुना गया है, लेकिन यह न्यूफूडलिस्ट में नहीं जोड़ा गया है। –

+0

@Daniela, आपको कन्स्ट्रक्टर में न्यूफूडलिस्ट संपत्ति को प्रारंभ करने की आवश्यकता है: 'न्यूफूडलिस्ट = नया ऑब्जर्जेबल कोलेक्शन (); ' –

संबंधित मुद्दे