XAML中绑定DataContext与代码

时间:2016-07-06 16:55:22

标签: wpf xaml data-binding

我有以下代码:

ProcessMainWindow.xaml.cs

public ProcessMainWindow(SourceTableRowInfo rowContent)
    {
        InitializeComponent();
        this.DataContext = rowContent;
    }

ProcessMainWindow.xaml

  <!--Insert Code---->
  <TabItem x:Name="postProcessTab" Header="Post-Processes">
            <local:PostProcessUserControl PostProcessItem="{Binding PostProcess, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        </TabItem>

因此RowContent中有一个名为PostProcess的元素。我试图将该元素绑定到UserControl依赖项属性,但无法使绑定工作。根据我所阅读的内容here (Using the DataContext),我的理解是我所拥有的应该是有效的,但我无法让它发挥作用。所以我误解了它的含义吗?我已经阅读了其他一些页面,但仍然无法弄清楚。

我也尝试过:

<!--Insert Code---->
  <TabItem x:Name="postProcessTab" Header="Post-Processes">
            <local:PostProcessUserControl PostProcessItem="{Binding, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Path=PreProcess}" />
        </TabItem>

如果这些是正确的,我想我的代码中的其他地方有错误。我还没有完全理解WPF中的数据绑定,知道是否是这种情况,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

要尝试的一件事是在Binding上添加一条跟踪:

PostProcessItem="{Binding PostProcess, PresentationTraceSources.TraceLevel=High}. 

然后在VS的“输出”窗格中查找它在运行时告诉您的内容。这可以帮助您确定DataContext不是您认为的内容,或者您​​的Path拼写错误的情况 - 编译器在C#中捕获的所有简单内容但可以&#39;在编译时在XAML之类的后期绑定/ duck-typed mias中检测到。

一旦你完成了绑定,就不要把这些痕迹留在绑定上;他们真的可以放慢速度。或者至少设置TraceLevel=None,以便在您认为以后再回来时节省麻烦。