如何在 WPF 的 Datagrid 中设置以编程方式生成的 ComboBox 的启用 属性?
How to set the enable property of a programmatically generated ComboBox in a Datagrid in WPF ?
在 WPF 中,我有一个包含 2 列的 Datagrid。
第一个是字符串,第二个是组合框。
我的目标是每次包含第 1 列的字符串时,将组合框的 属性 IsEnable 设置为 false。
我的数据源来自数据视图(其他一些列需要动态生成)。
我想解决方案必须围绕 "binding" 值,但是...我不知道要在里面放什么...有什么想法吗?
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;
您应该将 Binding
的 Path
设置为 HasAttachment
:
newCombobox.SetValue(ComboBox.IsEnabledProperty, new Binding("HasAttachment"));
您可能需要使用转换器将值从 true
转换为 false
:
newCombobox.SetValue(ComboBox.IsEnabledProperty, new Binding("HasAttachment") { Converter = new InverseBooleanConverter() });
How to bind inverse boolean properties in WPF?
在 WPF 中,我有一个包含 2 列的 Datagrid。 第一个是字符串,第二个是组合框。 我的目标是每次包含第 1 列的字符串时,将组合框的 属性 IsEnable 设置为 false。
我的数据源来自数据视图(其他一些列需要动态生成)。
我想解决方案必须围绕 "binding" 值,但是...我不知道要在里面放什么...有什么想法吗?
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;
您应该将 Binding
的 Path
设置为 HasAttachment
:
newCombobox.SetValue(ComboBox.IsEnabledProperty, new Binding("HasAttachment"));
您可能需要使用转换器将值从 true
转换为 false
:
newCombobox.SetValue(ComboBox.IsEnabledProperty, new Binding("HasAttachment") { Converter = new InverseBooleanConverter() });
How to bind inverse boolean properties in WPF?