我将Dictionary<string, Bitmap>
绑定到combobox
的问题。
Bitmaps
保存在资源文件中。
这可以加载组合框中的项目:
ComboBoxLanguage.ItemsSource = Languages;
ComboBoxLanguage.DisplayMemberPath = "Value";
ComboBoxLanguage.SelectedValuePath = "Key";
ComboBoxLanguage.SelectedValue = Settings.Default.language;
这是我的字典:
Languages = new Dictionary<string, Bitmap>
{
{ "en-US", Properties.Resources.US},
{"de-DE", Properties.Resources.DE}
};
但我的ComboBox
仅显示Sysytem.Drawing.Bitmap
有人能帮助我吗?
答案 0 :(得分:1)
可能你需要使用ObservableCollection
并制作包装类。
public class ComboBoxData
{
public string Path { get; set; }
public string Text { get; set; }
}
在视图模型中,您应指定一个组合框元素列表。
public ObservableCollection<ComboBoxData> Languages { get; set; }
public View()
{
InitializeComponent();
this.Languages = new ObservableCollection<ComboBoxData>()
{
new MyComboboxData(){Path = "Image1.jpg", Text = "Text1"},
new MyComboboxData(){Path = "Image2.jpg", Text = "Text2"}
};
this.DataContext = this;
}
在xaml中将你的组合框绑定到这个系列。
<ComboBox Name="ComboBoxLanguage" ItemsSource="{Binding Languages}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Path}"/>
<TextBlock Text="{Binding Text}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>