首页 新闻 搜索 专区 学院

wpf mvvmlight通过model传值时,view层数据不变化

0
悬赏园豆:30 [待解决问题]

这是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>

王力之的主页 王力之 | 初学一级 | 园豆:164
提问于:2020-11-05 18:23
< >
分享
所有回答(2)
0

简单的说,如果想要VIEW得到通知,必须实现INotifyPropertyChanged,
很明显,你只是ViewModel实现了此接口,而数据 CurrentData 这个对象并没有实现 INotifyPropertyChanged。

爱编程的大叔 | 园豆:30753 (高人七级) | 2020-11-05 23:07

public Tianli.Model.tbCarDimension CurrentData
{
get { return _currentData; }
set
{
if (_currentData != value)
{
_currentData = value;
RaisePropertyChanged();
}
}
}
这里也实现这个接口了

支持(0) 反对(0) 王力之 | 园豆:164 (初学一级) | 2020-11-09 08:20

@王力之:
这儿实现没用啊。
你修改这个CurrentData的属性,不会触发RaisepropertyChanged事件的,不信你Debug看看。
必须是tbCarDimension这个类实现才有用。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30753 (高人七级) | 2020-11-10 19:08
0

RaisePropertyChanged没有一个表示属性名称的参数吗?建议放完整代码看看

会长 | 园豆:10271 (专家六级) | 2020-11-09 11:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册