如何在WPF中的Datagrid中设置以编程方式生成的ComboBox的enable属性?

时间:2017-08-22 11:49:27

标签: c# wpf programmatically-created datagridcomboboxcolumn

在WPF中,我有一个包含2列的Datagrid。 第一个是字符串,第二个是comboBox。 我的目标是每次包含#1列的字符串时将组合框的属性IsEnable设置为false。

我的数据源来自数据视图(其他一些列需要动态生成)。

我想解决方案必须围绕"绑定"价值,但是......我不知道该放进去......有什么想法吗?

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<string> listUnitAlreadyAttached = new List<string>();
// 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;

1 个答案:

答案 0 :(得分:1)

您应该将Path的{​​{1}}设置为Binding

HasAttachment

您可能希望使用转换器将值从newCombobox.SetValue(ComboBox.IsEnabledProperty, new Binding("HasAttachment")); 转换为true

false

How to bind inverse boolean properties in WPF?