看起来RelativeSource在StepView的DataContext绑定上可能有一些小问题。由于模板不是可视化树的一部分,我认为您不能使用FindAncestor。您可以使用StaticResource作为指向主DataContext的指针(例如
http://www.codeproject.com/Articles/27432/Artificial-Inheritance-Contexts-in-WPF
),但我认为在本例中,只按ElementName搜索可能会更简单。该方法如下所示:
更新TabControl以具有名称,因此可以通过ElementName在绑定中搜索它
<C1:C1TabControl
x:Name="MyTabControl"
ItemsSource="{Binding Steps}"
SelectedItem="{Binding SelectedStep}"
SelectionChanged="{tcSteps_OnSelectionChanged">
更新StepView以按ElementName查找TabControl的DataContext
<local:StepView DataContext="{Binding ElementName=MyTabControl, Path=DataContext.SelectedStep}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
</local:StepView>