从一个基本的HelixToolkit示例开始,我能够渲染一个网格。在我的。xaml文件:
<HelixToolkit:HelixViewport3D Name ="viewPort" ZoomExtentsWhenLoaded="True">
<HelixToolkit:SunLight/>
<!--The content of this visual is defined in MainViewModel.cs-->
<ModelVisual3D Content="{Binding Model}"/>
在我的。cs文件中:
Model3DGroup modelGroup = new Model3DGroup();
// [... add stuff to modelGroup as children ]
this.Model = modelGroup;
现在,当单击按钮时,我尝试修改我渲染的对象。我试图通过更新模型的回调函数来实现它。
public void testUpdate(){
Model3DGroup newModelGroup = new Model3DGroup();
// [... add stuff to newModelGroup as children ]
this.Model = newModelGroup;
}
这不起作用:显示的对象不是那些添加到newModelGroup的对象。我该怎么做呢?
我终于设法使用PropertyChangedEventHandler解决了这个问题
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName) {
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
每次模型被修改时,OnPropertyChangedMethod被调用,所以新的修改被正确呈现。
this.Model = myNewModelGroup;
OnPropertyChanged("Model");