【问题标题】:Can't use RelativeSource in binding不能在绑定中使用 RelativeSource
【发布时间】:2015-08-09 01:50:14
【问题描述】:

我正在从一个窗口创建一个模态对话框,我需要将对话框中的一个组合框绑定到一个视图模型而不是它自己的一个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'。"}

内部异常如下。

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

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

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

【问题讨论】:

    标签: c# wpf xaml binding relativesource


    【解决方案1】:

    试试:

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

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

    【讨论】:

    • 嗯...我们现在正在取得进展。花括号,我错过了(早上 05:00 一定很累)。添加后,错误消失。但是,我仍然没有在组合框中显示元素。 (另外,我不确定 Mode 校正和 Window 类型前面的 x: 类型。示例不使用它并且我的智能感知不喜欢它。想法?
    猜你喜欢
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2011-02-15
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2014-12-01
    相关资源
    最近更新 更多