动态添加项目到Combobox

时间:2014-12-16 13:11:07

标签: wpf combobox

我有一个WPF Listview,其中包含项目详细信息,例如项目名称和描述。

我还有一个ComboBox,其中包含动态添加的值(1-10)(使用代码隐藏)。

我正在尝试根据当前选择的ListView值从ComboBox获取正确的“商品名称”,但我不知道如何。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

你可以做一个转换器:

public class SelectRangeFromCollectionConverter<T> : IValueConverter {
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
        IEnumerable<T> coll = value as IEnumerable<T>;
        if (coll != null) {
            int index;
            if (parameter != null && 
                int.TryParse(parameter.ToString(), out index) &&
                index > 0) {
                List<T> newColl = new List<T>();
                foreach (T item in coll) {
                    if(index==0) return newColl;
                    newColl.Add(item);
                    index--;
                }
                //not enough items
                return newColl;
            }
        }

        return DependencyProperty.UnsetValue;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
        throw new NotImplementedException();
    }
}

在您的XAML中:

<youNameSpace:SelectRangeFromCollectionConverter x:TypeArguments="TheTypeOfYourData" x:Key="SelectRangeFromCollectionConverter"/> 

<ComboBox ItemsSource="{Binding YourCollection, Converter={StaticResource SelectRangeFromCollectionConverter}, ConverterParameter=10}">
    <ComboBox.ItemTemplate>
        <DataTemplate DataType="{x:Type YouType}">
            <TextBlock Text="{Binding Name, Mode=OneWay}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>