这是viewmodel层
private Tianli.Model.tbCarDimension _currentData = new Model.tbCarDimension() ; public Tianli.Model.tbCarDimension CurrentData
{
get { return _currentData; }
set
{
if (_currentData != value)
{
_currentData = value;
RaisePropertyChanged();
}
}
}
public UcShowCarInfoVM()
{
LoadData();
Messenger.Default.Register<CarBaseInfo>(this, "ReadCarContour", GetCarContour);
}
private void GetCarContour(CarBaseInfo obj)
{
CurrentData.totalLength = obj.CarLength;
CurrentData.totalWidth = obj.CarWidth;
CurrentData.totalHight = obj.CarHigh;
//在这个地方不停修改 CurrentData 中的数据,但view 层不变化????????
}
// 这是view 界面层
<WrapPanel>
<Label Foreground="White" Width ="120" FontSize="25">车辆长度</Label>
<Label Foreground="GreenYellow" FontSize="25" Width ="120" Content="{Binding CurrentData .totalLength}" ></Label>
</WrapPanel>
<WrapPanel >
<Label Foreground="White" Width ="120" FontSize="25">车辆宽度</Label>
<Label Foreground="GreenYellow" FontSize="25" Width ="120" Content="{Binding CurrentData.totalWidth}"></Label>
</WrapPanel>
简单的说,如果想要VIEW得到通知,必须实现INotifyPropertyChanged,
很明显,你只是ViewModel实现了此接口,而数据 CurrentData 这个对象并没有实现 INotifyPropertyChanged。
public Tianli.Model.tbCarDimension CurrentData
{
get { return _currentData; }
set
{
if (_currentData != value)
{
_currentData = value;
RaisePropertyChanged();
}
}
}
这里也实现这个接口了
@王力之:
这儿实现没用啊。
你修改这个CurrentData的属性,不会触发RaisepropertyChanged事件的,不信你Debug看看。
必须是tbCarDimension这个类实现才有用。
RaisePropertyChanged
没有一个表示属性名称的参数吗?建议放完整代码看看