欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > WPF的C1DataGrid根据当前行实时选的值控制另外一列行是否可编辑

WPF的C1DataGrid根据当前行实时选的值控制另外一列行是否可编辑

2025/1/19 19:34:20 来源:https://blog.csdn.net/u012269637/article/details/145172530  浏览:    关键词:WPF的C1DataGrid根据当前行实时选的值控制另外一列行是否可编辑

之前都不是在表格里面通过列的控制直接使用属性触发事件就可以了,但是在C1DataGrid表格中动态添加一列,然后去选择一列的值,根据这列的值去控制另外的一个列的是否可编辑,放在表格外面很容易实现,可放在表格内,却麻烦一点,

通过行业名称选择事件cb_TradeName_SelectedValueChanged触发

        private void cb_TradeName_SelectedValueChanged(object sender, PropertyChangedEventArgs<object> e)
        {
            var _vm = DataContext as BatchSingleInquiryListFormVM;
            if (null == _vm) return;
            if (sender != null && ((C1ComboBox)sender).SelectedValue != null)
            {
                _vm.TradeID = ((C1ComboBox)sender).SelectedValue.ToString();
            }

//判断是否需要另一个列的编辑,ListProductStyleIsIsEditable这个是vm的临时属性,用于控制列的是否可编辑,之前说过如果是行加载事件,可以在对象里面写入是否只读、可见、可编辑属性,但是这个是加载后造作触发的,

使用的是这种写法

IsEditable="{Binding RelativeSource={RelativeSource   Mode=FindAncestor, AncestorType={x:Type Window}},Path=DataContext.ListProductStyleIsIsEditable,Mode=TwoWay}" 


            if (_vm.HandelIndustryCategory(Convert.ToString(e.NewValue)))
            {
                TradeComboBox.IsEditable = false;
                selectedBatchProductStyle.IsEditable = false;
                _vm.ListProductStyleIsIsEditable = false;
            }
            else
            {
                _vm.ListProductStyleIsIsEditable = true;
                TradeComboBox.IsEditable = false;
                selectedBatchProductStyle.IsEditable = true;
                // InquiryInfoGrid.Columns["TradeName"].IsEditable = true;//C1DataGrid不支持,flexGrid可以,如果是flexGrid可以尝试这种写法,我这是整列控制的,批量控制
            }
        }

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com