Привязка WPF во время выполнения не работает - PullRequest
0 голосов
/ 05 мая 2018

Использование .NET 4.7.1 WPF с MahApps 1.6.1.4. Я связываю HamburgerMenuIconItem.Icon следующим образом:

<controls:HamburgerMenuIconItem.Icon>
<Ellipse">
    <Ellipse.Fill>
        <ImageBrush ImageSource="{Binding Image}" />
    </Ellipse.Fill>
</Ellipse>
</controls:HamburgerMenuIconItem.Icon>

В режиме «Дизайн» я могу щелкнуть правой кнопкой мыши «Изображение» и перейти к свойству в моей ViewModel, которое является UserControl.DataContext. Как и ожидалось.

Но во время выполнения это завершается ошибкой:

System.Windows.Data Error: 40 : BindingExpression path error: 'Image' property not found on 'object' ''HamburgerMenuIconItem' (HashCode=44346036)'. BindingExpression:Path=Image; DataItem='HamburgerMenuIconItem' (HashCode=44346036); target element is 'ImageBrush' (HashCode=21345065); target property is 'ImageSource' (type 'ImageSource')

Итак, во время выполнения он пытается привязать свойство к «HamburgerMenuIconItem» или как? Я могу принудительно привязать к коду просмотра, как это:

{Binding Path=Image, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}

, который также работает во время выполнения, но я хотел бы, чтобы это свойство было в моей ViewModel.

Что я неправильно понимаю?

1 Ответ

0 голосов
/ 07 мая 2018

Кажется, проблема в том, что отсутствует наследование DataContext (но только во время выполнения). Объяснение решения здесь решило мою проблему.

...