У меня есть простая сцена, и я хотел бы, чтобы цвет элемента менялся, когда пользователь нажимает на элемент.
Я испробовал несколько вариантов, включая этот пост . Я также посмотрел на один из примеров , который делает именно то, что я хочу. Но по какой-то причине я не могу заставить ни одно решение работать.
<Window.DataContext>
<local:MainViewModel />
</Window.DataContext>
<Grid>
<h:HelixViewport3D x:Name="view1" ShowFrameRate="True" ZoomExtentsWhenLoaded="True"
ZoomAroundMouseDownPoint="True" RotateAroundMouseDownPoint="True" >
<h:SunLight/>
<ModelVisual3D x:Name="ViewPort" Content="{Binding Model}" />
</h:HelixViewport3D>
</Grid>
public class MainViewModel: UIElement3D
{
public Model3D Model { get; set; }
public MainViewModel()
{
MeshBuilder mb = new MeshBuilder();
mb.AddSphere(new Point3D(0, 0, 0), 20, 20, 20);
MeshGeometry3D msh = mb.ToMesh(true);
GeometryModel3D geo = new GeometryModel3D(msh, Materials.Blue);
Model3DGroup model3DGroup = new Model3DGroup();
model3DGroup.Children.Add(geo);
this.Model = model3DGroup;
}
protected override void OnMouseDown(MouseButtonEventArgs e)
{
base.OnMouseDown(e);
if(e.LeftButton == MouseButtonState.Pressed)
{
GeometryModel3D geo = Visual3DModel as GeometryModel3D;
geo.Material = geo.Material == Materials.Blue ? Materials.Red : Materials.Blue;
e.Handled = true;
}
}
}
Оба варианта, которые я пытался создать, но щелчок мыши не влияют на элемент. Любая помощь будет принята с благодарностью.