wpf3d游戏引擎ProjectLayoutView实现

1.ProjectLayoutView.xaml.cs

using PrimalEditor.Components;

using PrimalEditor.GameProject;

using PrimalEditor.Utilities;

using System.Windows;

using System.Windows.Controls;

namespace PrimalEditor.Editors

{

/// <summary>

/// ProjectLayoutView.xaml 的交互逻辑

/// </summary>

public partial class ProjectLayoutView : UserControl

{

public ProjectLayoutView()

{

InitializeComponent();

}

private void OnAddGameEntity_Button_Click(object sender, RoutedEventArgs e)

{

var btn = sender as Button;

var vm = btn.DataContext as Scene;

vm.AddGameEntityCommand.Execute(new GameEntity(vm) { Name = "Empty Game Entity" });

}

private void OnGameEntities_ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

GameEntityView.Instance.DataContext = null;

var listBox = sender as ListBox;

if (e.AddedItems.Count > 0)

{

GameEntityView.Instance.DataContext = listBox.SelectedItems0;

}

var newSection = listBox.SelectedItems.Cast<GameEntity>().ToList();

var previousSelection = newSection.Except(e.AddedItems.Cast<GameEntity>()).Concat(e.RemovedItems.Cast<GameEntity>()).ToList();

Project.UndoRedo.Add(new UndoRedoAction(

() =>

{

listBox.UnselectAll();

previousSelection.ForEach(x => (listBox.ItemContainerGenerator.ContainerFromItem(x) as ListBoxItem).IsSelected = true);

},

() =>

{

listBox.UnselectAll();

newSection.ForEach(x => (listBox.ItemContainerGenerator.ContainerFromItem(x) as ListBoxItem).IsSelected = true);

},

"Selection changed"

));

}

}

}

相关推荐
做个文艺程序员8 小时前
MQ第12篇:AI原生消息架构演进:从MQ到事件驱动的全链路设计
架构·消息队列·wpf·事件驱动架构·ai-native·cqrs
donk13142 天前
React Native for OpenHarmony 实战:三方库 react-native-circular-action-menu 的鸿蒙化适配指南
javascript·分布式·react native·react.js·wpf·harmonyos
donk13143 天前
React Native for OpenHarmony 实战:三方库 react-native-step-indicator 的鸿蒙化适配指南
分布式·react native·react.js·wpf·harmonyos
He BianGu3 天前
【笔记】WPF中RenderOptions类的详细功能
笔记·wpf
xiaogai_gai3 天前
BOM 物料清单同步实战:金蝶云星空 → 四化智造 MES 修改场景深度拆解
unity·游戏引擎
VidDown3 天前
上线三个月后的第一次事故:一个 Django 服务的日志、监控与故障复盘
数据库·python·django·wpf·音视频·视频编解码
He BianGu3 天前
【笔记】WPF中CachingHint的功能
笔记·wpf
He BianGu3 天前
【笔记】在WPF中BitmapScalingMode的作用
笔记·wpf
/**书香门第*/3 天前
Cocos Creator 打螺丝游戏的实现
游戏引擎·cocos2d·螺丝·打螺丝
Vae_Mars4 天前
幂等性学习笔记
笔记·学习·wpf