簡體   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