如何将字典与位图绑定到组合框

本文关键字:绑定 组合 位图 字典 | 更新日期: 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>