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

时间:2016-01-29 11:33:01

标签: c# wpf dictionary combobox bitmap

我将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

有人能帮助我吗?

1 个答案:

答案 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>