Ahoj, nemátě někdo zkušenosti s nabidnováním enum do nějaké
komponenty jako ListView a následně podle vybraného itemu (enum) v ListView
zobrazit (nabidnovat) obrázek ?
Bindování enum mi funguje v pohodě. Přes ObjectdataProvider si enums
převedu a nabidnuju do ListView. Nyní bych chtěl podle vybraného enum
zobrazit obrázek. V jiné aplikaci, kde tohle celé potřebuju zatím zobrazuju
podle enum obrázky takto
"Images/"+t.ToString().ToLower()+".png");
t je enum. Tedy převedu na string a všechny znaky na malé písmena.
Obrázek se tedy musí jmenovat stejně jako enum.
Zkoušel jsem ten obrázek, resp. ImageSource bindovat přes IValueConverter
a to takto
class ImageEnumConverter : IValueConverter
{
publicobject Convert(objectvalue, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//MoodType t = (MoodType)value;string text = value.ToString();
BitmapImage image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
image.UriSource = new Uri("Images/" + value.ToString().ToLower() + ".png");
image.EndInit();
return image;
}
publicobject ConvertBack(objectvalue, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
returnvalue;
}
}
Bez výsledku . Bindovat
obrázky apod umím, ale tohle nevím jak přesně udělat.
Proč k tomu používám enum ? Přes enum mám definované nálady -
smutný, naštvaný, rozmrzelý,.... Nepoužívám ho jenom pro obrázek ale i
pro stav, zobrazení nálady a spoustu dalších věcí. Napadlo mě to sice
zabalit do třídy, kde bych měl definovaný enum + image ale to už musím
dělat ručně.
Přes Binding a ObjectdataProvider si načtu všechny enumy a jediné co mi
zbývá je vyřešit ten konvert.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.