WPF Combobox中的独特值

我想在我的数据绑定combobox中获得不同的值

作为一个例子,它具有的值是:蓝色,蓝色,黄色,红色,橙色

我希望它只显示一次蓝色。

我的主要想法是将所有combobox值都放入一个数组中,将数组设置为distinct,然后重新填充combobox。 还有别的办法吗?

如果不是,我将如何从combobox中获取所有值?

谢谢

编辑 – class级:

public class DistinctConverter : IValueConverter { } 

编辑 – 调试:

在此处输入图像描述

您可以创建一个IValueConverter ,将列表转换为不同的列表:

 public class DistinctConverter : IValueConverter { public object Convert( object value, Type targetType, object parameter, CultureInfo culture) { var values = value as IEnumerable; if (values == null) return null; return values.Cast().Distinct(); } public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture) { throw new NotSupportedException(); } } 

将此添加到资源:

  

并像这样使用它:

  

假设你有一个List values = blue, blue, yellow, red, orange

你可以做

 ComboBox.ItemsSource = values.Distinct(); 

或者如果您要使用MVVM方法,您可以创建一个属性并使用类似属性绑定comboboxitemssource

 public List values { get { return value.Distinct(); } } 

如果您使用的是WPF c#4.0

 List list = new List(); foreach (object o in myComboBox.Items) { if (!list.Contains(o)) { list.Add(o); } } myComboBox.Items.Clear(); myComboBox.ItemsSource=list.ToArray();