Звучит так, как будто вы пытаетесь передать внешнее значение в свойство Path
объекта Binding
. То есть, если значение ItemContext
равно «Blob», необходимо выполнить привязку к DataContext.Blob
(не отображать значение «Blob»).
Это легко сделать в коде, потому что вы можете напрямую ссылаться на значение (вы передаете this.ItemContext
привязке как одноразовое значение). В разметке, однако, вы не можете сделать это. Вместо этого вы пытаетесь связать значение с Path
из Binding
, но вы не можете (потому что это не DependencyProperty).
Я бы предположил, что гораздо более простым решением было бы создать другое свойство в вашем UserControl: вместо того, чтобы передавать «имя объекта, с которым вы хотите связать», почему бы просто не передать значение объекта
Я представляю, что ваш текущий код выглядит так:
<u:MyControl DataContext="{Binding SomeObject}" ItemContext="MyPropertyName" />
... и вместо этого вы должны сделать так, чтобы это выглядело так:
<u:MyControl DataContext="{Binding SomeObject}" ItemValue="{Binding MyPropertyName}" />
... так что значение разрешено извне элемента управления. Внутри элемента управления вы можете использовать решение @ dowhilefor для привязки к значению.
Надеюсь, это имеет смысл!