我在我的应用程序中使用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到会改变(一切将保持相同)。
wpf中绑定的整个区域仍然被证明是一个非常尖锐的学习曲线,所以我欢迎任何有关如何实现预期结果的建议,或者即使可以这样做第一个地方。
我遇到过this后,但我不确定它是否真的是答案,即使这是我将如何设置在这种情况下实施它。
非常感谢
编辑
意识到,我大概可以沿着这种路线的设置绑定做到这一点代码:
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人员的一些很好的支持,我们提出了我在下面的答案中添加的代码 –