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>();

 

posted @   春天花会开,  阅读(194)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-09-21 引号与转义符杠\
点击右上角即可分享
微信分享提示