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

news/2024/11/26 4:59:37/

列变更,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/news/1549984.html

相关文章

selinux及防火墙

selinux说明 SELinux 是 Security-Enhanced Linux 的缩写&#xff0c;意思是安全强化的 linux 。 SELinux 主要由美国国家安全局&#xff08; NSA &#xff09;开发&#xff0c;当初开发的目的是为了避免资源的误用。 httpd进程标签&#xff08;/usr/share/nginx/html &#…

Python 获取微博用户信息及作品(完整版)

在当今的社交媒体时代&#xff0c;微博作为一个热门的社交平台&#xff0c;蕴含着海量的用户信息和丰富多样的内容。今天&#xff0c;我将带大家深入了解一段 Python 代码&#xff0c;它能够帮助我们获取微博用户的基本信息以及下载其微博中的相关素材&#xff0c;比如图片等。…

Mac下的vscode远程ssh免密码登录

Mac下的vscode远程ssh免密码登录&#xff08;同理可迁移至windows及linux系统&#xff09; 在日常开发中&#xff0c;使用远程服务器进行开发是非常常见的&#xff0c;而通过 SSH 免密码登录可以显著提高效率&#xff0c;避免每次连接时都需要输入密码。本文将介绍如何在 macOS…

深度学习:神经网络中线性层的使用

深度学习&#xff1a;神经网络中线性层的使用 在神经网络中&#xff0c;线性层&#xff08;也称为全连接层或密集层&#xff09;是基础组件之一&#xff0c;用于执行输入数据的线性变换。通过这种变换&#xff0c;线性层可以重新组合输入数据的特征&#xff0c;并将其映射到新…

H.264/H.265播放器EasyPlayer.js网页全终端安防视频流媒体播放器关于iOS不能系统全屏

在数字化时代&#xff0c;流媒体播放器已成为信息传播和娱乐消遣的主流载体。随着技术的进步&#xff0c;流媒体播放器的核心技术和发展趋势不断演变&#xff0c;影响着整个行业的发展方向。 EasyPlayer播放器属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持…

Mysql的加锁情况详解

最近在复习mysql的知识点&#xff0c;像索引、优化、主从复制这些很容易就激活了脑海里尘封的知识&#xff0c;但是在mysql锁的这一块真的是忘的一干二净&#xff0c;一点映像都没有&#xff0c;感觉也有点太难理解了&#xff0c;但是还是想把这块给啃下来&#xff0c;于是想通…

SpringMVC接收请求参数

&#xff08;5&#xff09;请求参数》五种普通参数 1.普通参数 代码块 RequestMapping("/commonParam") ResponseBody public String commonParam(String name,int age){System.out.println("普通参数传递 name > "name);System.out.println("普通…

量化交易系统开发-实时行情自动化交易-4.2.3.指数移动平均线实现

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来继续说说指数移动平均线实现。 …