如何在WPF中程序生成的数据表的ComboBox中设置enable属性?

39 浏览
0 Comments

如何在WPF中程序生成的数据表的ComboBox中设置enable属性?

在WPF中,我有一个Datagrid有2个列。第一列是一个字符串,第二列是一个组合框。我的目标是每次组合框包含列#1的字符串时,将IsEnable属性设置为false。我的数据源来自dataview(某些其他列需要动态生成)。我想解决方案必须围绕“绑定”值进行,但是……我不知道里面应该放什么……有什么想法吗?

DataView DG = FunctionCreatingADataView();
Datagrid1.ItemsSource = DG;
Datagrid1.AutoGenerateColumns = true;
Datagrid1.Items.Refresh();
DataGridTemplateColumn dgTemplateColumn = new DataGridTemplateColumn();
dgTemplateColumn.Header = "Attachment";
var newCombobox = new FrameworkElementFactory(typeof(ComboBox));
newCombobox.SetValue(ComboBox.NameProperty, "myCBB");
Binding enableBinding = new Binding();
enableBinding.Source = "HasAttachment";// A column in my DG
enableBinding.Mode = BindingMode.OneWay;
newCombobox.SetValue(ComboBox.IsEnabledProperty, enableBinding);
List listUnitAlreadyAttached = new List();
// Load list with some code
enableBinding.Source = listUnitAlreadyAttached;
newCombobox.SetBinding(ComboBox.ItemsSourceProperty, enableBinding);
var dataTplT = new DataTemplate();
dataTplT.VisualTree = newCombobox;
dgTemplateColumn.CellTemplate = dataTplT;
Binding bindingIsEnable = new Binding();
Datagrid1.Columns[1] = dgTemplateColumn;

admin 更改状态以发布 2023年5月21日
0
0 Comments

您应将 BindingPath 设置为 HasAttachment

newCombobox.SetValue(ComboBox.IsEnabledProperty, new Binding("HasAttachment"));

您可能需要使用转换器将值从 true 转换为 false

newCombobox.SetValue(ComboBox.IsEnabledProperty, new Binding("HasAttachment") { Converter = new InverseBooleanConverter() });

如何在WPF中绑定反转布尔属性?

0