我在我的應用程序中使用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人員的一些很好的支持,我們提出了我在下面的答案中添加的代碼 –