【发布时间】:2019-10-21 19:50:59
【问题描述】:
我有一个ComboBox,我需要在SelectedItem 上做一个转换器。问题是 IValueConverter 需要绑定值,但也需要 Collection。配置了DependencyObject,但它给了我一个错误消息
“System.Windows.Data.Binding”类型的对象无法转换为“System.Collections.ObjectModel.ObservableCollection`1[MyClass]”类型。
这是我的IValueConverter
public class MyConverter : DependencyObject, IValueConverter
{
public static readonly DependencyProperty FoldersProperty =
DependencyProperty.Register(nameof(MyCollection), typeof(ObservableCollection<MyClass>), typeof(MyClassModelToMyClassID), new FrameworkPropertyMetadata(new ObservableCollection<MyClass>()));
public ObservableCollection<MyClass> MyCollection
{
get { return GetValue(FoldersProperty) as ObservableCollection<MyClass>; }
set { SetValue(FoldersProperty, value); }
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
//Amazing Convert code that uses MyCollection and Value
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
//Amazing ConvertBack code that uses MyCollection and Value
}
}
我是这样称呼它的:
<Page.Resources>
<converter:MyConverter x:Key="Converter" MyCollection="{Binding DataCollection}" />
</Page.Resources>
....
<ComboBox
ItemsSource="{Binding DataCollection}"
SelectedItem="{Binding Path=MyValue, Converter={StaticResource TaxCodeConverter}}" />
编辑:添加完整的 IValueConvert 减去 Convert 和 ConvertBack 代码
【问题讨论】:
标签: wpf data-binding ivalueconverter