问题: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";
}
}