我有以下代码:
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中的数据绑定,知道是否是这种情况,所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
要尝试的一件事是在Binding上添加一条跟踪:
PostProcessItem="{Binding PostProcess, PresentationTraceSources.TraceLevel=High}.
然后在VS的“输出”窗格中查找它在运行时告诉您的内容。这可以帮助您确定DataContext
不是您认为的内容,或者您的Path
拼写错误的情况 - 编译器在C#中捕获的所有简单内容但可以&#39;在编译时在XAML之类的后期绑定/ duck-typed mias中检测到。
一旦你完成了绑定,就不要把这些痕迹留在绑定上;他们真的可以放慢速度。或者至少设置TraceLevel=None
,以便在您认为以后再回来时节省麻烦。