我正在使用WPF应用程序,并且正在处理一个包含动态内容的DataGrid,该内容必须对事件等作出反应。
我有以下包含DataGrid的View的ViewModel
public class HiddenFieldPanelViewModel
{
public List<HiddenFieldComponent> HiddenFieldList { get; set; }
public HiddenFieldComponent Component { get; set; }
public bool IsVisible { get; set; }
public enum FieldTypes{Constant,Variable}
public HiddenFieldPanelViewModel()
{
HiddenFieldList = new List<HiddenFieldComponent>();
IsVisible = false;
}
}
这个模型中唯一适用于此示例的属性是以下枚举属性。
public enum FieldTypes {Constant,Variable}
当DataGrid被填充时,我需要绑定枚举类型到DataGrid单元格中的下拉框。以下是添加一个DataGrid集合项后的示例图片。
![enter image description here](https://istack.dev59.com/Z7NiJ.webp)
在我的XAML中,我已经指定了以下内容:
<DataGridTemplateColumn Header="Field Type" CanUserResize="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Height="20" SelectedIndex="0" ItemsSource="{Binding Path=FieldTypes}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Path=Value}"></Label>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
其他列正确地绑定了数据,但这一列没有。我不确定是否有更好的方法来解决这个问题。如果需要,我还编写了一个从IValueConverter转换成EnumConverter来处理字符串-枚举-字符串转换的类。谢谢。
ItemsSource
和SelectedItem
。基本上,您只需要将SelectedItem绑定到用于绑定DataGrid中行的任何内容即可。该属性需要是FieldType类型。 - Metro Smurf