2010-04-09 30 views
6

this very related question here on SO okudum ve yanıttaki bağlantı nedeniyle son derece yararlı oldu. Şimdi sadece fazladan bir adım atmak ve hepsini MVVM modeli ile çalışmak için bir problem yaşıyorum.WPF + MVVM'de bir ComboBox'a bir enum bağlanması

en benim ViewModel var ve (hatta Modeli) bir enum tanımlanan olabilir diyelim: Ben GUI bir ComboBox bu databind istiyorum

public enum MyTypes { Type1, Type2, Type3 }; 

. Makaleye göre, MyTypes üzerinde Enum.GetValues ​​() yöntemini çağırmak için bir ObjectDataProvider kullanırdım. Bu yüzden MyTypes'i MethodParameter olarak geçmek zorundayım. Ama sen nasıl geçiyorsun? Ben XAML ad alanına başvuru eklemek gibi çeşitli yöntemler denedim:

<Window.Resources> 
     <ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="TipHandlingValues"> 
      <ObjectDataProvider.MethodParameters> 
       <!-- what goes here? it's totally wrong. --> 
       <my:MyTypes /> 
      </ObjectDataProvider.MethodParameters> 
     </ObjectDataProvider> 
    </Window.Resources> 

Hemen hemen hiçbir şey ben orada bile derleyecek koydu. Bu küçük engelin nasıl geçeceğini bilen var mı?

cevap

4

kolay yoludur kodunda bu satırı eklemektir:

DataContext = Enum.GetValues(typeof(MyTypes)); 

Diğer seçenekler enum dışına değerlerinin listesi oluşturmak işaretleme uzantısı eklemektir.

+0

olabilir That En basit, ama bunun uygun olduğunu düşünmüyorum çünkü DataContext'im ViewModel'im, tüm komutlarımı ve diğer combobox'larımı nasıl bağlarım. Sadece bir combobox'tan başka bir GUI elemanım var. "Diğer seçenekler" konusuna gelince, benim soruğumda yayınladığım işaretlemenin enum'dan değerler listesini nasıl oluşturduğunu düşündüm? – Dave

+0

, bunu saf XAML ile yapmanın bir yolu olmayabilir. ve düzenli C# ile daha kolay yapılır bana görünüyor. ViewModel'de MyTypesValues ​​adında bir özellik oluşturun ve oraya bağlanın. ({MyTypesValues} 'ı Bağlama). – Andrey

İlgili konular