Syncfusion 复选框 ComboBoxAdv
2014-11-18 13:54 stoneniqiu 阅读(687) 评论(0) 编辑 收藏 举报XAML:
<syncfusion:GridTemplateColumn.EditTemplate> <DataTemplate DataType="viewModel:CustomerViewModel" > <syncfusion:ComboBoxAdv ItemsSource="{x:Static viewModel:RecordStatusModel.RecordStatusItem}" DropDownOpened="ComboBoxAdvStatus_DropDownOpened" DropDownClosed="ComboBoxAdvStatus_DropDownClosed" AllowMultiSelect="True">
</syncfusion:ComboBoxAdv> </DataTemplate> </syncfusion:GridTemplateColumn.EditTemplate>
1。绑定数据源。一个静态的List<string>即可。
2.关键的两个事件:DropDownOpened和DropDownClosed。 即打开和关闭。在复选框打开的时候初始化,关闭的时候处理用户的选择。
/// <summary> /// 报警级别复选框 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ComboBoxAdvStatus_DropDownOpened(object sender, EventArgs e) { var cbatmp = (ComboBoxAdv)sender; var alarmtypeselect = new ObservableCollection<object>(); var targetuser = CustomersDatagrid.SelectedItem as CustomerViewModel; if (targetuser != null) { var liststr = RecordStatusModel.AlarmStatusToStrList(targetuser.RecordTypeFlags); foreach (var str in liststr) { alarmtypeselect.Add(str); } cbatmp.SelectedItems = alarmtypeselect; } } /// <summary> /// 报警类型复选框 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ComboBoxAdvStatus_DropDownClosed(object sender, EventArgs e) { ComboBoxAdv cbatmp = (ComboBoxAdv)sender; var tmp = cbatmp.SelectedItems.ToList<string>(); var targetuser = CustomersDatagrid.SelectedItem as CustomerViewModel; var flag = RecordStatusModel.AlarmStrListToEnum(tmp); if (targetuser != null) targetuser.RecordTypeFlags = flag; alarmHandleViewModel.Save(); }
RecordStatusModel:

static class RecordStatusModel { private static List<string> _recordStatusItem; private static Dictionary<AlarmStatusFlags, string> _alarmStatusDictionary; public static List<string> RecordStatusItem { get { return _recordStatusItem??(_recordStatusItem=new List<string>() { "报警", "应答", "恢复", "移除", }); } } public static Dictionary<AlarmStatusFlags, string> AlarmStatusDictionary { get { return _alarmStatusDictionary ?? (_alarmStatusDictionary = new Dictionary<AlarmStatusFlags, string>() { {AlarmStatusFlags.Alarm, "报警"}, {AlarmStatusFlags.Acked, "应答"}, {AlarmStatusFlags.Recover, "恢复"}, {AlarmStatusFlags.Remove, "移除"}, }); } } public static List<string> AlarmStatusToStrList(AlarmStatusFlags flags) { return (from dic in AlarmStatusDictionary where (int)(dic.Key & flags) > 0 select dic.Value).ToList(); } public static AlarmStatusFlags AlarmStrListToEnum(IEnumerable<string> list) { return (from str in list from dic in AlarmStatusDictionary where dic.Value == str select dic) .Aggregate<KeyValuePair<AlarmStatusFlags, string>, AlarmStatusFlags>(0, (current, dic) => current | dic.Key); } }
关注书山有路,用自己的知识体系去丈量世界!
书山有路群:452450927
书山有路群:452450927
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2013-11-18 BugTracker 功能说明(有图有真相)