【问题标题】:Clear WPF-Helix toolkit 3D View using buttons使用按钮清除 WPF-Helix 工具包 3D 视图
【发布时间】:2021-10-12 17:09:50
【问题描述】:

我正在使用带有 Helix Toolkit 的 WPF 来制作 3D 网格动画。我将数据作为点,并使用这些数据创建最终网格。我从 Helix 示例中获取 SimpleDemo 项目,在我的 MainViewModel.cs 文件中我有以下代码:

public class MainViewModel : INotifyPropertyChanged
    {
        MeshBuilder meshBuilder;
        MeshGeometry3D mesh;
        Model3DGroup modelGroup;

        public MainViewModel()
        {
            var greenMaterial = MaterialHelper.CreateMaterial(Colors.Green);

            modelGroup = new Model3DGroup();

            // Create a mesh builder and add a box to it
            meshBuilder = new MeshBuilder(false, false);
            meshBuilder.AddBox(new Point3D(1, 1, 1), 1, 1, 1);

            // Create a mesh from the builder (and freeze it)
            mesh = meshBuilder.ToMesh(true);


            modelGroup.Children.Add(new GeometryModel3D { Geometry = mesh, Material = greenMaterial, BackMaterial = greenMaterial });

            Model = modelGroup;
            ButtonClearAsync();
        }
...
rest code
...

在这里我创建了一个立方体,然后将它添加到模型上。 ButtonClearAsync 方法是清除模型的方法。

public async Task RemoveModel()
        {

            modelGroup = new Model3DGroup();
            await Task.Delay(2000);
            Model = null;

            OnPropertyChanged(nameof(Model));

            meshBuilder = new MeshBuilder(false, false);
            meshBuilder.AddBox(new Point3D(5, 5, 5), 2, 2, 2);

            mesh = meshBuilder.ToMesh(true);

            var greenMaterial = MaterialHelper.CreateMaterial(Colors.Green);

            modelGroup.Children.Add(new GeometryModel3D { Geometry = mesh, Material = greenMaterial, BackMaterial = greenMaterial });

            Model = modelGroup;
            OnPropertyChanged(nameof(Model));
        }

等待 2 秒,清除模型并用其他对象重新绘制当前模型。 事件处理程序工作得很好。

问题是我需要在按下按钮时清除并重绘模型。 但是在 MainWindow.xaml 和 MainWindow.xaml.cs 文件中,为了调用 MainViewModel 内部的函数,我必须创建一个类对象。但是如果我这样做,我认为由于 MainViewModel 的构造函数会创建另一个 Model 实例,并且 Model 永远不会清除或更改。

它永远不会清除,因为事件处理程序总是返回 null 并且什么都不做。 只有当我在 MainViewModel 构造函数中运行 Clear 方法时它才有效,但这不是我想要的。

对我应该怎么做有什么建议吗? 提前致谢

【问题讨论】:

    标签: c# wpf helix-3d-toolkit


    【解决方案1】:

    如果需要在视图模型上调用方法,请尝试:

    if(this.DataContext is MainViewModel mvm){
        mvm.MyFunctionToCall();
    }
    

    这使用 MainWindow 的当前数据上下文,因此您不需要创建任何新的 MainViewModel 对象。

    【讨论】:

    • 你是救世主!非常感谢不知道我可以访问这样的功能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多