0

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

加价如下。

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

我正在尝试遵循 SO 的不同建议,但我只遇到以下错误。还有一个绑定示例列表,这并没有让我变得更聪明。

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

内部异常如下。

{“字符串‘x:Type Window’中的字符‘w’出乎意料。无效的 XAML 类型名称。”}

我已经尝试过除Window之外的其他东西,包括创建窗口的名称(ProgramWindow),但它抱怨相同的字符 - “w”!当我在x:Type Program (现在是 w's!)上拍了一会儿照片时,它抱怨的是字符“m”,而不是。

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

4

1 回答 1

0

尝试:

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

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

于 2015-08-09T03:47:35.510 回答