WPF RelativeSource 疑问

问题:TextBlock的Text无法获取到MainViewModel实例的StepName值。
描述:我的理解是声明了Button中的Binding的Source为RelativeSource,AncestorType为Grid,那么Button就应该显示"Main View Step Name"字符串,但最终运行时Button未显示字符,为什么?也看了MSND中RelativeSource类里面的那个示例,我的理解是我这个代码和他那个代码没有本质区别啊

另外吐槽:CSDN这个文本编辑控件很有问题,Test Case很有问题啊
代码:

      <Grid DataContext="{x:Static local:MainViewModel.SingleInstance}">
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <Button DataContext="{Binding StepItemViewModel}"
                Content="{Binding Path = StepName,RelativeSource={RelativeSource AncestorType={x:Type Grid}}}">
        </Button>
    </Grid>

        public class MainViewModel:ViewModelBase
    {
        private static MainViewModel _singleInstance = null;
        public static MainViewModel SingleInstance
        {
            get
            {
                if (_singleInstance == null)
                {
                    _singleInstance = new MainViewModel();
                }
                return _singleInstance;
            }
        }

        private string _stepName = string.Empty;
        public string StepName
        {
            get { return _stepName; }
            set
            {
                _stepName = value;
                OnPropertyChanged("StepName");
            }
        }

        public StepItemViewModel StepItemViewModel { get; set; }
        public MainViewModel()
        {
            StepItemViewModel = new StepItemViewModel();
            StepName = "Main View Step Name";
        }
    }


这里把 DataContext改成 ItemsSource="{Binding 数据源}"试试看。问题应该出在这里吧

你既然定义了grid的datacontext,那下面只需要普通的binding就可以了,不需要用relativesource