我想在我的數據綁定組合框中重複值
爲例來獲得不同的值它的值是:藍色,藍色,黃色,紅色,橙色
我想它只顯示一次藍色。
我的主要想法是將所有組合框的值放入一個數組中,將數組設置爲不同,然後重新填充組合框。有沒有其他方法?
如果沒有,我將如何從組合框中獲取所有值?
感謝
編輯 - 等級:
public class DistinctConverter : IValueConverter
{
}
編輯 - 調試:
我想在我的數據綁定組合框中重複值
爲例來獲得不同的值它的值是:藍色,藍色,黃色,紅色,橙色
我想它只顯示一次藍色。
我的主要想法是將所有組合框的值放入一個數組中,將數組設置爲不同,然後重新填充組合框。有沒有其他方法?
如果沒有,我將如何從組合框中獲取所有值?
感謝
編輯 - 等級:
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<object>().Distinct();
}
public object ConvertBack(
object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
其添加到資源:
<local:DistinctConverter x:Key="distinctConverter" />
,並使用它像這樣:
<ComboBox ItemsSource="{Binding Vals, Converter={StaticResource distinctConverter}}" />
比方說,你你有一個List<String> values = blue, blue, yellow, red, orange
你可以做
ComboBox.ItemsSource = values.Distinct();
,或者如果您打算爲MVVM方法,您可以創建一個屬性,綁定組合框的ItemsSource與像
public List<string> values
{
get
{
return value.Distinct();
}
}
,如果你是C#4.0
List<object> list = new List<object>();
foreach (object o in myComboBox.Items)
{
if (!list.Contains(o))
{
list.Add(o);
}
}
myComboBox.Items.Clear();
myComboBox.ItemsSource=list.ToArray();
你會如何創建一個轉換器使用WPF? – 2011-05-13 18:30:23
@Sandeep,查看更新後的答案。 – svick 2011-05-13 18:31:39
感謝您的信息,我有麻煩進入<本地:...我已經設置名稱空間:xmlns:local =「clr-namespace:ProjectName」但無法獲得
2011-05-13 19:39:19