Wpf 有没有办法在代码背后引用绑定

Wpf 有没有办法在代码背后引用绑定,wpf,vb.net,xaml,data-binding,Wpf,Vb.net,Xaml,Data Binding,我在我的应用程序中使用了ActivPro功能区,并利用了在使用标准mdi主机时可以将文档标题与主功能区标题集成的方式。对接也是ActivPro对接。现在,当我使用特定供应商的控制时,我认为/希望我的问题更一般一些 目前,提供此功能的Xaml标记如下 <ribbon:RibbonWindow.DocumentName> <MultiBinding Converter="{StaticResource ConditionalConverter}"> &

我在我的应用程序中使用了ActivPro功能区,并利用了在使用标准mdi主机时可以将文档标题与主功能区标题集成的方式。对接也是ActivPro对接。现在,当我使用特定供应商的控制时,我认为/希望我的问题更一般一些

目前,提供此功能的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>
然而,我不能得到尽可能多的绑定。非常具体地说,我想找到一种在xaml中绑定的第二行动态设置ElementName的方法

<Binding ElementName="standardMdiHost" Path="PrimaryWindow.Title" />
然而,初步尝试

 Dim binding2 As New MultiBinding() With {.Converter = New ConditionalConverter()}
    binding2.Bindings.Add(New Binding("Binding1") with {.ElementName = "MainRibbonWindow", .Path = IsMDIChildMaximized}

事情并不像预期的那样发展。如果有人能猜出什么可行,我将不胜感激。

通过将DocumentName属性绑定到视图模型中的属性,您会幸运得多。这样,您就可以自由地在代码中生成值。。。也许是这样的:

在XAML中:

<ribbon:RibbonWindow DocumentName="{Binding DocumentName, Mode=OneWay}" ... />

然后只需将Value1和Value2设置为所需的任何值,它们将使用INotifyPropertyChanged接口或更准确地更新DocumentName,INotifyPropertyChanged接口将通知UI DocumentName属性的更改,然后检索最新的值。

以防任何人遇到此问题并遇到类似问题。我最初的错误是未能正确理解绑定语法是如何工作的,而成功完成这项工作所需的所有线索都已经存在于xaml中,我希望删除并替换这些代码

最终的结果是,它确实起了作用

 Dim binding2 As New MultiBinding() With {.Converter = New ConditionalConverter()}
    binding2.Bindings.Add(New Binding("IsMDIChildMaximized") With {.Source = MainRibbonWindow})
    binding2.Bindings.Add(New Binding("PrimaryWindow.Title") With {.Source = host})
    SetBinding(DocumentNameProperty, binding2)
这是一个非常具体的问题,涉及Actipro ribbon和docking ommands,两个源MainRibbonWindow和host是主窗口,我们试图将其标题与文档窗口的标题以及standardMdiHost本身集成


我想借此机会向阅读此问题并发表建议的各位表示感谢,也感谢Actipro自己指出了我方法的错误并提供了最终正确的代码。

非常感谢您的建议。最后,我不得不承认Actipro的同事们给予了我很大的支持,我们提出了代码,我在下面的回答中添加了代码
<ribbon:RibbonWindow DocumentName="{Binding DocumentName, Mode=OneWay}" ... />
public string DocumentName
{
    get { return string.Format("{0}{1}", Value1, Value2); }
}

private string Value1
{
    get { return value1; }
    set { value1 = value; NotifyPropertyChanged("DocumentName");
}

private string Value2
{
    get { return value2; }
    set { value2 = value; NotifyPropertyChanged("DocumentName");
}
 Dim binding2 As New MultiBinding() With {.Converter = New ConditionalConverter()}
    binding2.Bindings.Add(New Binding("IsMDIChildMaximized") With {.Source = MainRibbonWindow})
    binding2.Bindings.Add(New Binding("PrimaryWindow.Title") With {.Source = host})
    SetBinding(DocumentNameProperty, binding2)