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