Я использую ленту Actipro в своем приложении и использую способ, которым можно интегрировать заголовок документа с заголовком главной ленты, когда стандартный хост mdi (стыковка - это док-станция Actipro). Теперь, пока я использую элементы управления конкретного поставщика, я думаю/надеюсь, что мой вопрос немного более общий.Есть ли способ ссылаться на привязку в коде позади
В настоящее время Xaml, предоставляющий эту функциональность, отмечен таким образом.
<ribbon:RibbonWindow.DocumentName>
<MultiBinding Converter="{StaticResource ConditionalConverter}">
<Binding ElementName="window" Path="IsMDIChildMaximized" />
<Binding ElementName="standardMdiHost" Path="PrimaryWindow.Title" />
<Binding Source="{x:Null}" />
</MultiBinding>
</ribbon:RibbonWindow.DocumentName>
Сама лента называется так в коде позади, я могу написать что-то вдоль линий;
MainRibbonWindow.DocumentName
Однако я не могу добраться до MultiBinding. Очень конкретно я хотел бы найти способ динамически устанавливать ELEMENTNAME на второй линии привязки в XAML
<Binding ElementName="standardMdiHost" Path="PrimaryWindow.Title" />
, потому что я знаю, что фактическая standardmdihost, что в настоящее время refered чтобы изменится (все остальное останется одна и та же).
Вся область привязки в wpf по-прежнему является очень резкой кривой обучения, поэтому я бы приветствовал любые предложения относительно того, как я могу добиться желаемого результата или даже если это возможно сделать в первое место.
Я столкнулся с сообщением this, но я не уверен, действительно ли это ответ, и даже если бы я решил применить его в этой ситуации.
Большое спасибо
EDIT
Понял, что я мог бы сделать это в коде, установив привязок по такого рода линии:
Dim binding As New MultiBinding() With {.Converter = New BooleanAndConverter()}
binding.Bindings.Add(New Binding("AreWindowsMaximized") With {.Source = host})
binding.Bindings.Add(New Binding("HasItems") With {.Source = host})
Me.SetBinding(IsMDIChildMaximizedProperty, binding)
Однако предварительные предпринимались попытки
Dim binding2 As New MultiBinding() With {.Converter = New ConditionalConverter()}
binding2.Bindings.Add(New Binding("Binding1") with {.ElementName = "MainRibbonWindow", .Path = IsMDIChildMaximized}
не идут так, как ожидалось. Если кто-то может помешать догадаться о том, что может работать, я буду очень благодарен.
Большое спасибо за ваше предложение. В конце (я должен признать некоторую большую поддержку со стороны людей в Actipro, мы придумали код, который я добавил в ответ чуть ниже этого –