«Привязка может быть установлена ​​только для DependencyProperty of DependencyObject» при попытке связать этот ValueConverter - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть этот класс:

public class AssetDescriptionLookupConverter : FrameworkElement, IValueConverter
{
    public IEnumerable<T_AssetDescription> LookupList
    {
        get { return (IEnumerable<T_AssetDescription>)GetValue(LookupListProperty); }
        set { SetValue(LookupListProperty, value); }
    }

    public static readonly DependencyProperty LookupListProperty =
        DependencyProperty.Register("Lookup", typeof(IEnumerable<T_AssetDescription>),
        typeof(AssetDescriptionLookupConverter));

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        T_AssetDescription description = 
            LookupList.FirstOrDefault(x => x.AssetDescriptionID.Equals(value));
        if (description == null) return "";
        return description.Item;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return Binding.DoNothing;
    }
}

Когда я пытаюсь включить его в свой XAML в качестве ресурса, например, так:

<local:AssetDescriptionLookupConverter 
    x:Key="assetDescriptionLookup" 
    LookupList="{Binding AssetDescriptions}" />

Я получаю красный волнистый туман под LookupList="{Binding AssetDescriptions}"с сообщением об ошибке

Невозможно установить привязку в свойстве LookupList типа AssetDescriptionLookupConverter.«Привязка» может быть установлена ​​только в свойстве DependencyProperty объекта DependencyObject.

Почему это так?И как я могу это исправить?

1 Ответ

0 голосов
/ 30 ноября 2018

По поручению генерального директора Microsoft мы должны следовать соглашению об именах, которое он определил при регистрации свойства зависимости.Итак, проблема в том, что вы забыли нажать несколько клавиш, правильная форма:

public static readonly DependencyProperty LookupListProperty =
    DependencyProperty.Register("LookupList", typeof(IEnumerable<T_AssetDescription>),
    typeof(AssetDescriptionLookupConverter));
...