handycontrol的CheckComboBox的SelectedItems顺序
【实现效果】
【问题】handycontrol的CheckComboBox没有SelectedItems这一项:
当保存下来的选中项,需要在下次打开的时候加载,而handycontrol的CheckComboBox没有SelectedItems,
于是就先解决如何拿到绑定SelectedItems,通过附加属性的方式:
WPF 使用附加属性来绑定ListBox的SelectedItems - 只吃肉不喝酒 - 博客园 (cnblogs.com)参考这个帖子
但从实现效果上看,我的需求是:我保存下来的是什么顺序显示的就是什么顺序
这是我保存下来的顺序(SelectedItems的值)
重新打开读取后的SelectedItems值的顺序变成了ItemsSource给的值的顺序
//ItemsSource的值 FunctionComboBoxSource = new List<Function>() { new Function(){FunctionId="001",FunctionName="测直径"}, new Function(){FunctionId="002",FunctionName="测倒角"}, new Function(){FunctionId="003",FunctionName="测厚度"}, new Function(){FunctionId="004",FunctionName="正反面识别"}, new Function(){FunctionId="005",FunctionName="标定"}, new Function(){FunctionId="006",FunctionName="对位"}, };
然后我尝试调整SelectedItems里的项的顺序,发现如下:
最后细心观察,在进OnSelectedItemsChanged这个方法的时候,控件都没初始完,就是说在给SelectedItems赋值的时候ItemsSource还是空的,可能是因为这个原因导致add的时候加不进去数据,但数据后来又莫名奇妙有。
最后的解决办法就是:在控件加载完之后(即有了ItemsSource数据后),再给SelectedItems赋值:
//StationSettingView.xaml.cs public StationSettingView() { InitializeComponent(); this.Loaded += StationSettingView_Loaded; } //初始化完成后的方法 private void StationSettingView_Loaded(object sender, RoutedEventArgs e) { var viewModel = (StationSettingViewModel)this.DataContext; //去viewModel中赋值SelectedItems viewModel.LoadedCommand.Execute(); }
重要的一点:
// stat.LstFunction是SelectedItems的绑定数据,在viewModel的构造函数中要先不为空,否则OnSelectedItemsChanged这个方法进不去 stat.LstFunction= new ObservableCollection<Camera>();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-09-21 引号与转义符杠\