WPF DateGrid绑定了一个数据源,自定义的列 DataGridComboBoxColumn的绑定下拉选中的能不能绑定枚举类型
时间: 2024-09-11 09:12:46 浏览: 49
WPF CheckBox绑定枚举数据源(数据列表)
在WPF(Windows Presentation Foundation)中,DataGrid是一个用于显示表格数据的控件。如果你想在DataGridComboBoxColumn中使用枚举类型作为下拉列表的数据源,并允许用户选择,确实可以做到。你可以通过以下几个步骤实现:
1. 首先,你需要创建一个包含枚举类型的`DependencyProperty`,这将作为你的组合框(ComboBox)的ItemsSource。例如,如果你有一个名为`MyEnum`的枚举类型,可以在你的自定义控制或ViewModel里这样做:
```csharp
public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register("ItemsSource", typeof(IEnumerable<MyEnum>), typeof(MyCustomColumn));
```
2. 然后,在你的`DataGridComboBoxColumn`的初始化或属性设置中,设置`ItemsSource`:
```csharp
<DataGridComboBoxColumn Header="Header Name" x:Name="myComboBoxColumn">
<DataGridComboBoxColumn.ItemsSource>
<Binding Path="ItemsSource" ElementName="myCustomControl"/>
</DataGridComboBoxColumn.ItemsSource>
</DataGridComboBoxColumn>
```
3. 最后,在你的视图模型(ViewModel)中,你可以将枚举值转换成字符串数组,以便于显示:
```csharp
private IEnumerable<MyEnum> _itemsSource;
public IEnumerable<MyEnum> ItemsSource
{
get => _itemsSource;
set
{
_itemsSource = value;
OnPropertyChanged();
}
}
public object[] ComboBoxDisplayValues
{
get
{
return _itemsSource.Select(e => e.ToString()).ToArray();
}
}
```
现在,DataGridComboBoxColumn会根据`ComboBoxDisplayValues`中的字符串来填充下拉列表。
阅读全文