我有一个WPF Listview
,其中包含项目详细信息,例如项目名称和描述。
我还有一个ComboBox
,其中包含动态添加的值(1-10)(使用代码隐藏)。
我正在尝试根据当前选择的ListView
值从ComboBox
获取正确的“商品名称”,但我不知道如何。
有什么建议吗?
答案 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>