WPF - 绑定不起作用

时间:2015-04-14 17:28:39

标签: c# wpf xaml

我在这里有一个相当令人沮丧的问题...我有一个包含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的正确用法?

1 个答案:

答案 0 :(得分:2)

我会看一下this question中提供的答案。它似乎提供了Frame在这种情况下行为的具体解释。

除非您选择Frame超过UserControl的具体原因,否则最好将此(以及任何其他子视图)重新实现为UserControl。< / p>