我在这里有一个相当令人沮丧的问题...我有一个包含TabControl的WPF页面,各种TabItems的内容是另一个WPF页面(托管在一个Frame中,因为Page只能有Frame或Window家长)。即使正在显示FlowCalibrationSummaryView,其上的所有内容都是空的,因为SummaryViewModel的数据绑定由于某种原因不起作用。这是XAML的一部分:
<TabControl Grid.Row="0">
<TabItem Header="Current Calibration">
<TabItem.Content>
<Frame>
<Frame.Content>
<view:FlowCalibrationSummaryView DataContext="{Binding SummaryViewModel}"/>
</Frame.Content>
</Frame>
</TabItem.Content>
</TabItem>
</TabControl>
我在SummaryViewModel的get上有一个断点,它只会被在父视图模型中构造它的代码所击中。这是被绑定的财产:
public const string SummaryViewModelPropertyName = "SummaryViewModel";
private FlowCalibrationSummaryViewModel _SummaryViewModel;
public FlowCalibrationSummaryViewModel SummaryViewModel
{
get { return _SummaryViewModel; }
set
{
if (_SummaryViewModel == value)
return;
_SummaryViewModel = value;
RaisePropertyChanged(SummaryViewModelPropertyName);
}
}
此时我完全难倒,我不能为我的生活弄清楚为什么这种绑定不起作用。任何帮助将不胜感激。
更新:它肯定与它在一个框架中有关。我尝试将FlowCalibrationSummaryView更改为UserControl而不是Page,以查看是否有帮助,但事实并非如此,然后我尝试将其从包含的框架中取出并且有效。我的项目中的所有视图都是作为Pages完成的,所以为了保持一致性,我更喜欢这是一个Page,但是我必须在一个Frame中托管它。是否有我在这里缺少的东西,或者作为UserControl的正确用法?
答案 0 :(得分:2)
我会看一下this question中提供的答案。它似乎提供了Frame
在这种情况下行为的具体解释。
除非您选择Frame
超过UserControl
的具体原因,否则最好将此(以及任何其他子视图)重新实现为UserControl
。< / p>