如何将字典与位图绑定到组合框
本文关键字:绑定 组合 位图 字典 | 更新日期: 2023-09-27 18:32:22
我在将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
有人可以帮助我吗?
可能需要使用 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>