[英]Combobox binding doesn't work unless debug converter is used in Xaml
我很沮丧 我有一个ComboBox
,他的ItemSource
是一个名为ObservablePaircollection
的自定义词典,它只是一个可观察的词典(源代码位于http://www.broculos.net/2014/03/wpf-editable-datagrid-and.html )。 DisplayMemberPath
是字典的键,其中SelectedValuePath
是所述键的值。
我正在读取一个配置文件,该文件包含一个程序与给定键匹配的字符串,然后使用该匹配键填充组合框。 问题是,除非我将Converter添加到绑定中,否则组合框始终显示为空,这只是一个简单的debugconverter,可让我检查XAML绑定。 我不知道为什么。
这是转换器:
public class DatabindingDebugConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
Debugger.Break();
return value;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
Debugger.Break();
return value;
}
}
这是我的组合框xaml:
<ComboBox DisplayMemberPath="Key"
ItemsSource="{Binding SelectedModel.Fields, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged, Converter={StaticResource debugConverter}}"
SelectedItem="{Binding SelectedField, Converter={StaticResource debugConverter}}"
SelectedValuePath="Value" />
这是ItemSource所属的类,称为SelectedModel
(在此之后,我将为其发布该类):
public class DataModel : INotifyPropertyChanged
{
private ModelBase _selectedModel;
public ModelBase SelectedModel
{
get { return _selectedModel; }
set { _selectedModel = value; OnPropertyChanged("SelectedModel"); }
}
private Pair<string, string> _selectedField;
public Pair<string, string> SelectedField
{
get { return _selectedField; }
set { _selectedField = value; OnPropertyChanged("SelectedField"); }
}
}
这是ModelBase
类:
public abstract class ModelBase : INotifyPropertyChanged
{
private ObservablePairCollection<string, string> _fields = new ObservablePairCollection<string, string>();
public ObservablePairCollection<string, string> Fields
{
get { return _fields; }
set { _fields = value; OnPropertyChanged("Fields"); }
}
}
从上面的XAML代码可以看到,转换器被添加到两个绑定中。 当我取出转换器时,组合框不再正确填充。
您可以尝试使用项目模板来设置希望数据显示的方式,此外,如果组合框不知道如何处理数据,则需要一个转换器。 只使用一个空的转换器是否有害?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.