Я пытаюсь преобразовать отображаемое значение комбинированного списка, используя его привязку в качестве ключа для поиска значения, которое я хотел бы отобразить.Кажется, я не могу заставить его работать.
Текст данных моего пользовательского элемента управления - MyObject.MyObject имеет свойство «MasterDrawerId», которое является идентификатором «MyReferencedObject».
В другом месте в моем приложении, доступным через статическое свойство моего App.xaml.cs, является коллекцией «MyOtherObjects».«MyReferencedObject» имеет отношение внешнего ключа с идентификатором «MyOtherObject».
Мой комбинированный список связан с «MasterDrawerId», который передается в конвертер.Затем я использую это в качестве поиска для «MyReferencedObject», чтобы получить идентификатор внешнего ключа «MyOtherObject» для отображения имени этого объекта.
Я знаю, что это кажется странным, но в основном это просто использование свойстватекстовый текст для поиска и отображения имени другого объекта на его месте в выпадающем списке.
Это мой код:
masterSiteComboBox.DisplayMemberPath = "Name";
Binding binding = new Binding("MasterDrawerId");
binding.Mode = BindingMode.TwoWay;
binding.Converter = new DrwIdToSiteConverter();
masterSiteComboBox.SelectedItem = binding;
masterSiteComboBox.ItemsSource = ListOfMyOtherObjects;
Вот мой код преобразователя:
открытый класс DrwIdToSiteConverter: IValueConverter {public DrwIdToSiteConverter () {}
public virtual object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
XferSite site = new XferSite();
foreach(XferUserDrawerPermissions perm in App.UserDrawerPermissions)
{
if (perm.DocumentTypeId.Match(value.ToString()))
{
site.Id = int.Parse(perm.SiteId);
site.Name = perm.SiteName;
break;
}
}
return site;
}
public virtual object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
}
Я установил точку останова в первой строке моего метода "Преобразовать" моего конвертера, и он никогда не попадал.