C#之WPF的C1FlexGrid空间的行加载事件和列事件变更处理动态加载的枚举值

ops/2024/11/22 22:14:54/

列变更,EnumDataItemStackClassTypeList数据源是枚举配置,实时查询到VM缓存的,如果是定义的枚举就不用这个麻烦了,直接在对象里面获取枚举值匹配,即

   public string ApplyStatusName
        {
            get { return EnumHelper.GetDescriptionByValue<StockClassApplyStatusEnum>(ApplyStatus); }
        }
 

问题是这个枚举是后台实时查询的,且类型不是int型,不能调用,于是只能走另外方法

页面控件使用如下

 <c1:Column Header="变更前类型" Binding="{Binding OldTypeName, Mode=TwoWay, ValidatesOnExceptions=True, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" ColumnName="OldTypeName" Width="180" TextWrapping="True">
                        <c1:Column.CellTemplate>
                            <DataTemplate >
                                <TextBlock Cursor="Hand" Margin="4,0" Text="{Binding OldTypeName }"/>
                            </DataTemplate>
                        </c1:Column.CellTemplate>
                        <c1:Column.CellEditingTemplate>
                            <DataTemplate>
                                <c1:C1ComboBox BorderThickness="0" Style="{StaticResource StackPanel-C1ComboBox-Multiple}" Width="120" IsDropDownOpen="True" 
                                                 Margin="0" SelectedValue="{Binding OldType,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True }"
                                               DisplayMemberPath="Name" SelectedValuePath="Code" SelectedItemChanged="C1ComboBox_SelectedItemChanged"   
                                               ItemsSource="{Binding Path=DataContext.EnumDataItemStackClassTypeList,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=basicControls:SingletoneWin}}"/>
                            </DataTemplate>
                        </c1:Column.CellEditingTemplate>

                    </c1:Column>

行事件加载

 private new void FlexGrid_LoadedRows_RowIndex(object sender, EventArgs e)
        {
            base.c1FlexGrid_LoadedRows(sender, e);
            
            var vm = DataContext as StockClassParamChangeApplyFormVM;
            ViewHelper.SetRowIndexNoPage(sender as C1FlexGrid);
            if (CfgReviewItem == null) return;
            if (CfgReviewItem.Rows.Count > 0)
            {
                foreach (var row in CfgReviewItem.Rows)
                {
                    var model = row.DataItem as StockClassParamChangeDetailLogModel;
                    if (model == null) continue;
                    vm.CurrentDetailItem = model;
                    vm.ChangeEunmValue();

                }
            }
        }

列属性变更,获取到控件的操作行,针对操作行的列进行属性值变更,列用的下拉框控件

 private void C1ComboBox_SelectedItemChanged(object sender, C1.WPF.PropertyChangedEventArgs<object> e)
        {
            var vm = DataContext as StockClassParamChangeApplyFormVM;
            if (vm == null)
            {
                return;
            }
            var testInfo = CfgReviewItem.HitTest(Mouse.GetPosition(CfgReviewItem));
            if (testInfo.Row > -1)
            {
                var selectedItem = CfgReviewItem.Rows[testInfo.Row].DataItem as StockClassParamChangeDetailLogModel;

                vm.CurrentDetailItem = selectedItem;
                vm.ChangeEunmValue();
            }

        }

       //vm中处理,因为要刷新属性
        public void ChangeEunmValue()
        {
            if (CurrentDetailItem != null)
            {
                int? changeTypes = CurrentDetailItem.ChangeType;
                string newTypes = CurrentDetailItem.NewType;
                string oldTypes = CurrentDetailItem.OldType;
                if (changeTypes.HasValue) {
                    foreach(EnumDataItemModel model in EnumDataItemStackClassChangeTypeList) {
                        if (model.Code.Equals(Convert.ToString(changeTypes))) {
                            CurrentDetailItem.ChangeTypeName = model.Name;
                        }
                    }
             
                }
                if (!string.IsNullOrEmpty(newTypes))
                {
                    foreach (EnumDataItemModel model in EnumDataItemStackClassTypeList)
                    {
                        if (model.Code.Equals(Convert.ToString(newTypes)))
                        {
                            CurrentDetailItem.NewTypeName = model.Name;
                        }
                    }

                }
                if (!string.IsNullOrEmpty(oldTypes))
                {
                    foreach (EnumDataItemModel model in EnumDataItemStackClassTypeList)
                    {
                        if (model.Code.Equals(Convert.ToString(oldTypes)))
                        {
                            CurrentDetailItem.OldTypeName = model.Name;
                        }
                    }

                }
                RaisePropertyChanged(() => CurrentDetailItem);
            }
        }


http://www.ppmy.cn/ops/135896.html

相关文章

【Oracle篇】SQL性能优化实战案例(从15秒优化到0.08秒)(第七篇,总共七篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

计算机网络 第三章:数据链路层(关于争用期的超详细内容)

数据链路层要干的是&#xff1a;解决在一组网络上&#xff08;一段链路上&#xff09;传输的问题。 &#xff08;在第一章我们讨论过数据是如何经过五层传输的&#xff0c;但在本章我们只考虑数据链路层之间传输数据的问题&#xff0c;所以就先想象成是两个链路层之间在直接传输…

【K8S系列】Kubernetes 中如何调试imagePullSecrets配置详细步骤介绍

调试 imagePullSecrets 配置是确保 Kubernetes 能够成功拉取私有镜像所需的关键步骤。以下是详细的调试步骤和建议。 1. 确认 imagePullSecrets 配置 首先&#xff0c;确保在 Pod 的 YAML 配置中正确引用了 imagePullSecrets。其基本结构如下&#xff1a; apiVersion: v1 kin…

【如何用更少的数据作出更好的决策】-gpt生成

如何用更少的数据作出更好的决策 用更少的数据作出更好的决策是一种能力的体现&#xff0c;需要结合有效的方法、严谨的逻辑以及对问题的深刻理解。以下是一些可以帮助你实现这一目标的策略&#xff1a; 明确目标 在收集和分析数据之前&#xff0c;先明确你的决策目标是什么…

JMeter 性能测试计划深度解析:构建与配置的树形结构指南

Apache JMeter 的 TestPlan .jmx 文件是采用树形结构进行组织的&#xff0c;这种结构使得测试计划的构建和配置更加直观和易于管理。以下是对 JMeter GUI 配置内容的详细描述&#xff1a; 一、一级目录&#xff1a;jmeterTestPlan jmeterTestPlan&#xff1a;这是整个测试计…

Zustand 让 React 状态变得太简单

为什么选择 Zustand? Zustand 是一个为 React 打造的现代化状态管理库,它以其简洁的 API 和强大的功能正在改变前端开发的方式。相比 Redux 繁琐的样板代码(action types、dispatch、Provider等),Zustand 提供了更加优雅且直观的解决方案。 核心特性 1. 基于 Hook 的简洁API i…

MySQL最后练习,转转好物交易平台项目

第一步&#xff0c;做一个项目要先做数据库&#xff0c;创建表 这边已经帮你们创好了&#xff0c; CREATE TABLE UserInformation_普通用户信息表 ( id INT(4) NOT NULL COMMENT 编号 AUTO_INCREMENT, username VARCHAR(10) NOT NULL COMMENT 用户名, password VARCHAR(20) N…

HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)习惯推荐方案概述

一、习惯推荐是HarmonyOS学习用户的行为习惯后做出的主动预测推荐。 1.开发者将用户在应用/元服务内的使用行为向HarmonyOS共享&#xff0c;使得HarmonyOS可以基于共享的数据学习用户的行为习惯。 2.在HarmonyOS学习到用户的行为习惯后&#xff0c;会给用户推荐相应功能&#x…