Нет проблем
Я создал свойство зависимости, которое принимает строковое значение. Я установил его на TextBlock
, и он работает:
<TextBlock dp:ElementDataContext.ElementName="LvMain">
Я проверил, что для свойства ElementDataContext.ElementName
установлено значение «LvMain».
Проблема
Вот проблема: в контекстном меню TextBlock
я хочу привязать к этому свойству зависимости через PlacementTarget
.
Вот как я пытаюсь это сделать. Это отрывок из моего XAML, содержащего TextBlock
и ContextMenu
:
<TextBlock dp:ElementDataContext.ElementName="LvMain">
<TextBlock.ContextMenu>
<ContextMenu Tag="{Binding PlacementTarget.(dp:ElementDataContext.ElementName), RelativeSource={RelativeSource Self}}">
Это не удается во время выполнения. При открытии контекстного меню я получаю "ошибку пути BindingExpression":
BindingExpression path error: '(dp:ElementDataContext.ElementName)' property not found on 'object' ''TextBlock' (Name='')'. BindingExpression:Path=PlacementTarget.(dp:ElementDataContext.ElementName); DataItem='ContextMenu' (Name='contextMenu'); target element is 'ContextMenu' (Name='contextMenu'); target property is 'Tag' (type 'Object')
Я подозреваю, что мой путь привязки неверен. Я пытался
PlacementTarget.(dp:ElementDataContext.ElementName)
PlacementTarget.dp:ElementDataContext.ElementName
PlacementTarget.ElementDataContext.ElementName
Ничего не работает. Какой правильный синтаксис? Это вообще возможно?
1 ответ
Синтаксис пути к свойству PlacementTarget.(dp:ElementDataContext.ElementName)
правильный, но вы также должны явно указать часть Path=...
в выражении свойства:
<ContextMenu Tag="{Binding Path=PlacementTarget.(dp:ElementDataContext.ElementName),
RelativeSource={RelativeSource Self}}">
Однако раздел Неявный путь в Binding Markup Extension a> не упоминает об этом поведении.
Похожие вопросы
Новые вопросы
wpf
Windows Presentation Foundation, или WPF, является подсистемой для визуализации пользовательских интерфейсов в приложениях на основе Windows.