c# - WPF ComboBox with image -
i'm trying populate combo images. defined as:
<combobox selecteditem="{binding selectedlangcomboitem}" itemssource="{binding languages}"> <combobox.itemtemplate> <datatemplate> <stackpanel orientation="horizontal"> <image source="{binding image}" /> <textblock text="{binding label}" /> </stackpanel> </datatemplate> </combobox.itemtemplate> </combobox>
where items languageitem classes:
public class languageitem { public system.drawing.bitmap image { get; set; } public string label { get; set; } public string culture { get; set; } public languageitem(system.drawing.bitmap image, string label, string culture) { image = image; label = label; culture = culture; } }
now, in viewmodel c'tor do:
_languages = new observablecollection<languageitem>(); system.reflection.assembly app = system.reflection.assembly.getexecutingassembly(); system.io.stream file; file = app.getmanifestresourcestream("mynamespace.images.flag1.gif"); _languages.add(new languageitem(new bitmap(file), "italian", "it-it")); file = app.getmanifestresourcestream("mynamespace.images.flag2.gif"); _languages.add(new languageitem(new bitmap(file), "english", "en-en")); this.selectedlangitem = _languages[0];
the images embedded resources. here have 2 problems:
- the images not displayed;
the item not selected, selectedlangitem is:
public languageitem selectedlangitem { { return _selectedlangitem; } set { if (_selectedlangitem == value) return;
_selectedlangitem = value; this.raisepropertychanged("selectedlangitem"); } }
use
new bitmapimage(new uri("mynamespace.images.flag1.gif", urikind.relative));
as have implement imagesource
and regarding not selected: property name "selectedlangitem" while in xaml selectedlangcomboitem if did not mistype.
code:
this.raisepropertychanged("selectedlangitem");
xaml:
<combobox selecteditem="{binding selectedlangcomboitem}"
Comments
Post a Comment