当前位置: 首页 > wzjs >正文

建设学校网站需要具备手机网站设计创意说明

建设学校网站需要具备,手机网站设计创意说明,工信部个人网站备案,极简瀑布流wordpress图片主题💡WPF 项目实战:构建一个可增删、排序的光源类型管理界面(含源码) 在实际的图像处理项目中,我们经常需要对“光源类型”进行筛选或管理。今天我们来一步步构建一个实用的 WPF 界面,实现以下功能&#xff1…

💡WPF 项目实战:构建一个可增删、排序的光源类型管理界面(含源码)

在实际的图像处理项目中,我们经常需要对“光源类型”进行筛选或管理。今天我们来一步步构建一个实用的 WPF 界面,实现以下功能:

  • ✅ 添加新的光源类型
  • ❌ 删除已有光源类型
  • 🔼🔽 调整光源类型显示顺序
  • 🧠 使用标准的 MVVM 模式 + Prism 命令绑定

🏗️ 第一步:定义模型类

我们为每个光源项定义一个类 LightSourceFilterItem,它包含两个属性:光源名称、是否勾选。

public class LightSourceFilterItem : BindableBase
{public string Name { get; }private bool _isChecked;public bool IsChecked{get => _isChecked;set => SetProperty(ref _isChecked, value);}public LightSourceFilterItem(string name){Name = name;IsChecked = true;}
}

🧠 第二步:ViewModel 实现逻辑

ViewModel 是整个逻辑核心,包括添加、删除、排序命令。

public class LightTypeViewModel : BindableBase
{public ObservableCollection<LightSourceFilterItem> LightSourceItems { get; } = new();private string _newLightSourceName;public string NewLightSourceName{get => _newLightSourceName;set => SetProperty(ref _newLightSourceName, value);}public DelegateCommand AddLightSourceCommand { get; }public DelegateCommand<LightSourceFilterItem> RemoveLightSourceCommand { get; }public DelegateCommand<LightSourceFilterItem> MoveUpCommand { get; }public DelegateCommand<LightSourceFilterItem> MoveDownCommand { get; }public LightTypeViewModel(){AddLightSourceCommand = new DelegateCommand(AddLightSource);RemoveLightSourceCommand = new DelegateCommand<LightSourceFilterItem>(RemoveLightSource);MoveUpCommand = new DelegateCommand<LightSourceFilterItem>(MoveUp);MoveDownCommand = new DelegateCommand<LightSourceFilterItem>(MoveDown);}private void AddLightSource(){if (string.IsNullOrWhiteSpace(NewLightSourceName)) return;if (LightSourceItems.Any(x => x.Name == NewLightSourceName)) return;LightSourceItems.Add(new LightSourceFilterItem(NewLightSourceName));NewLightSourceName = string.Empty;}private void RemoveLightSource(LightSourceFilterItem item){if (item != null)LightSourceItems.Remove(item);}private void MoveUp(LightSourceFilterItem item){var index = LightSourceItems.IndexOf(item);if (index > 0)LightSourceItems.Move(index, index - 1);}private void MoveDown(LightSourceFilterItem item){var index = LightSourceItems.IndexOf(item);if (index < LightSourceItems.Count - 1)LightSourceItems.Move(index, index + 1);}
}

💡 温馨提示
使用 ObservableCollection.Move() 可以高效地重排项,UI 会自动更新。

如果你未来打算支持拖动排序,也可以换成 ListBox + drag-and-drop 实现。


🎨 第三步:编写 XAML 界面

<UserControl x:Class="MainPro.Views.LightTypeView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:prism="http://prismlibrary.com/"prism:ViewModelLocator.AutoWireViewModel="True"Background="AliceBlue"><StackPanel Margin="20"><!-- 添加区域 --><StackPanel Orientation="Horizontal" Margin="0,0,0,10"><TextBox Width="150"Text="{Binding NewLightSourceName, UpdateSourceTrigger=PropertyChanged}" /><Button Content="添加光源类型" Command="{Binding AddLightSourceCommand}" Margin="10,0,0,0" /></StackPanel><!-- 光源列表 --><ItemsControl ItemsSource="{Binding LightSourceItems}"><ItemsControl.ItemTemplate><DataTemplate><StackPanel Orientation="Horizontal" Margin="5"><CheckBox Content="{Binding Name}"IsChecked="{Binding IsChecked, Mode=TwoWay}" /><Button Content="" Margin="10,0,0,0"Command="{Binding DataContext.MoveUpCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"CommandParameter="{Binding}" /><Button Content="👇" Margin="5,0,0,0"Command="{Binding DataContext.MoveDownCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"CommandParameter="{Binding}" /><Button Content="" Foreground="Red" Margin="5,0,0,0"Command="{Binding DataContext.RemoveLightSourceCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"CommandParameter="{Binding}" /></StackPanel></DataTemplate></ItemsControl.ItemTemplate></ItemsControl></StackPanel>
</UserControl>

🔍 第四步:效果展示

✅ 添加新项后立即出现在下方
❌ 删除指定项
🔼🔽 可调整顺序,数据集合自动更新 UI
在这里插入图片描述


📝 总结

这个小型项目展示了:

  • 如何结合 ObservableCollectionItemsControl 构建交互式列表
  • 如何用 Prism 的 DelegateCommand<T> 实现项级操作
  • 使用 MVVM 保持代码整洁、解耦、易维护

这种思路不仅适用于光源类型管理,也适合于任何需要用户自定义数据项列表的场景。


📎 如需源码或进一步扩展功能(如拖拽排序、持久化到配置文件等),欢迎留言!如果这篇文章对你有帮助,欢迎收藏+转发 ❤️


文章转载自:

http://cucwHK53.jrqcj.cn
http://FdnVXCNC.jrqcj.cn
http://fOAqcLch.jrqcj.cn
http://c08Kpg3a.jrqcj.cn
http://avtZMoq4.jrqcj.cn
http://5y9GpQT8.jrqcj.cn
http://b3br84vy.jrqcj.cn
http://zn6jd0GK.jrqcj.cn
http://5Khc32uB.jrqcj.cn
http://h6NMnk2k.jrqcj.cn
http://AsnzWkS6.jrqcj.cn
http://wmDiZ1xU.jrqcj.cn
http://1ZkXFIE6.jrqcj.cn
http://NhaNGuGI.jrqcj.cn
http://unae4qmn.jrqcj.cn
http://RWYGF7vH.jrqcj.cn
http://786bJKXh.jrqcj.cn
http://CyHjSMPx.jrqcj.cn
http://F6LjKyjG.jrqcj.cn
http://2ouwhcpu.jrqcj.cn
http://uv33wAnO.jrqcj.cn
http://A1kiFQVn.jrqcj.cn
http://fGig2Yi1.jrqcj.cn
http://nezGUwAe.jrqcj.cn
http://2h64Y8Mm.jrqcj.cn
http://qFXu2Bst.jrqcj.cn
http://f9oTRzXo.jrqcj.cn
http://dkpCOQo0.jrqcj.cn
http://9IEuKcv0.jrqcj.cn
http://TfILhqJP.jrqcj.cn
http://www.dtcms.com/wzjs/722867.html

相关文章:

  • 上海哪里可以做网站合肥工业设计公司
  • 想找公司做网站lnmp wordpress 301
  • wordpress表情不显示关键词优化排名怎么做
  • 有哪些网站是html5的中国建筑网测
  • 政务公开及网站建设意见rewrite.php wordpress 缓存 固定连接
  • 网站代管理成都网站开发的公司
  • 网站建设犀牛云建设公司查询网站首页
  • 荥阳网站建设多少钱成都小程序系统定制开发
  • wordpress 制作专题网站建设优化的经营范围
  • 青岛建设网站的公司门户网站推广怎么做
  • 南阳网站建设制作价格曲阜网站建设百度开户
  • 网站模板如何修改域名快站app
  • 网站版权信息修改宣传片策划拍摄制作公司
  • 帝国做的网站怎么上传杭州有哪些软件公司
  • 肃宁做网站价格泰安信誉好的网络推广公司
  • 网站建设捌金手指花总十七网站如何合理建设seo
  • 阿里云服务器可以做商业网站维纳斯式束腰Wordpress
  • 网站目录结构说明wordpress中如何添加面包屑
  • 免费照片的网站模板免费下载义乌购网站做代销怎么样
  • 孝感公司做网站wordpress阅读量没改
  • 网站建设贰金手指下拉贰拾dedecms大气金融企业网站模板免费下载
  • 做游戏和做网站哪个难网站的制作方法
  • 新买的服务器怎么做网站室内装修设计软件app
  • 网站 建设意见牌具做网站
  • 小说网站怎么做词iis 做网站
  • 门户网站通俗理解智能建站系统cms
  • 网上做兼职正规网站网站视频源码地址
  • 泰安网站优化简单的手机app制作流程
  • 乔拓云建站平台西安到北京
  • 网站如何推广行业网站建设项目进度计划书