繁体   English   中英

除非Xaml中使用了调试转换器,否则组合框绑定将无法工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM