之前都不是在表格里面通过列的控制直接使用属性触发事件就可以了,但是在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可以尝试这种写法,我这是整列控制的,批量控制
}
}