不能在绑定中使用RelativeSource

时间:2015-08-09 01:50:15

标签: c# wpf xaml binding relativesource

我正在从一个窗口创建一个模态对话框,我需要将对话框中的一个组合框绑定到一个视图模型,而不是它自己的 DataContext 中的一个。相反,我需要将组合框绑定到创建对话框的窗口的视图模型中的属性。

加价如下。

<ComboBox x:Name="Options"
          ItemsSource="{Binding 
            RelativeSource={
              RelativeSource FindAncestor,
              AncestorType=x:Type Window},
            Path=DataContext.AllOptions}"
          ...
          Style="{StaticResource DefaultComboBoxStyle}" />

我正在尝试跟踪来自SO的different suggestions,但我只是在以下错误中登陆。还有a list of binding examples,这不会让我更聪明。

  

{“'在'System.Windows.Baml2006.TypeConverterMarkupExtension'上提供值引发异常。'行号'131'和行位置'15'。“}

内部例外情况如下。

  

{“字符'w'在字符串'x:Type Window'中是意外的。无效的XA​​ML类型名称。”}

我已尝试使用其他东西 Window ,包括创建窗口的名称( ProgramWindow ),但它抱怨同一个字符 - “w”!当我花了一些时间拍摄 x:Type Program (没有w!)时,它抱怨字符“m”,而不是。

我不确定我理解为什么,所以对此的解释会很棒。当然,我的问题是我所缺少的。我应该在对话框的窗口标记中添加任何内容吗?我是否需要告诉计算机,ancestoring窗口的视图模型将用作相对源?

1 个答案:

答案 0 :(得分:0)

尝试:

RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type x:Window}}

您缺少Mode =和祖先类型周围的大括号。 x:Type。

需要大括号