Окно WPF не показывает свойства базового класса - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть класс, который содержит открытое свойство MyDictionary :

Public MustInherit Class MyBaseClass
    Public Shared ReadOnly Property MyDictionary As Dictionary(Of Integer, String)
        Get
            Return New Dictionary(Of Integer, String) From {
                {0, "Option 1"},
                {1, "Option 2"}
            }
        End Get
    End Property
End Class

Этот класс является базовым классом для нескольких дочерних классов, например, ClassA и ClassB .Свойство MyDictionary () , как и ожидалось, наследуется дочерними классами, но обратите внимание, что оно статическое.

Также у меня есть разметка XAML, как и далее, и DataContext элемента управления является экземпляром одного изклассы детей:

<Window>
    <Grid DataContext="{Binding ClassA}">
        <ComboBox ItemsSource="{Binding MyDictionary.Values}" />
    </Grid>
</Window>

Проблема заключается в том, что во время выполнения окно содержит пустой ComboBox.Описание ошибки:

Ошибка System.Windows.Data: 39: Ошибка пути BindingExpression: свойство «MyDictionary» не найдено в «объекте», «ClassA» (HashCode = 9490272) '.BindingExpression: Path = MyDictionary.Values;DataItem = 'ClassA' (HashCode = 9490272);целевой элемент - ComboBox (Name = '');Свойство target - «ItemsSource» (тип «IEnumerable»)

Если я явно переопределить MyDictionary () свойство в ClassA , проблема исчезнет, ​​и ComboBoxЭлемент управления содержит элементы «Вариант 1» и «Вариант 2».

Два вопроса.

  1. Зачем мне нужно создавать свойства в каждом дочернем классе для использования его в качестве источника элементов управления?Почему XAML не может использовать свойства базового класса?Ценность наследства теряется в противном случае.
  2. Есть ли способ использовать свойство базового класса в качестве источника предметов?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...