Caliburn.Micro ItemsControl
(जैसे ComboBox या ListBox) आधारित नियंत्रण जो आवश्यक XAML बनाने में आप कम से कम देखें समर्थन सम्मेलनों में पकाया गया है।
सबसे पहले आपके पास मानक सम्मेलन है जहां नियंत्रण सामग्री नियंत्रण के समान नाम के साथ व्यूमोडेल प्रॉपर्टी से जुड़ी होगी। ItemsControl
के मामले में नियंत्रण सामग्री गुण ItemsControl.ItemsSource
है। और दूसरा सम्मेलन आप कैलिबर्न के साथ बॉक्स से बाहर निकलते हैं। मिक्रो यह है कि ItemsControl.SelectedItem
को एक व्यूमोडेल प्रॉपर्टी में बांधने का प्रयास किया जाएगा जिसमें नियंत्रण का एकवचन नाम है, या तो "सक्रिय", "चयनित" या "वर्तमान" प्रीपेन्ड (कैलिबर्न में ConventionManager
देखें। माइक्रो स्रोत)।
मन में यह आप प्राप्त कर सकते है कि आप अपने दृश्य में निम्नलिखित के साथ हैं:
<ComboBox x:Name="Strings"></ComboBox>
और अपने ViewModel में:
public BindableCollection<string> Strings
{
get
{
// silly example of the collection to bind to
return new BindableCollection<string>(
new string[]{ "one", "two", "three"});
}
}
private string _selectedString;
public string SelectedString
{
get { return _selectedString; }
set
{
_selectedString= value;
NotifyOfPropertyChange(() => SelectedString);
// and do anything else required on selection changed
}
}
पहले सम्मेलन नियंत्रण नाम को चुनता है ("स्ट्रिंग्स ") और ComboBox.ItemsSource
को ViewModel प्रॉपर्टी Strings
पर बांधता है। दूसरा सम्मेलन पहले "स्ट्रिंग्स" को "स्ट्रिंग" में एकवचन करता है और ComboBox.SelectedItem
को बांधने के लिए "चयनित स्ट्रिंग" संपत्ति प्राप्त करने के लिए "चयनित" तैयार करता है।
स्रोत
2011-05-02 05:14:36
एक और नहीं बल्कि सुरुचिपूर्ण समाधान यहाँ का प्रस्ताव है: http://stackoverflow.com/questions/4041233/binding-selectionchanged-to-viewmodel-using-caliburn-micro – buckley