【发布时间】:2014-07-03 03:50:56
【问题描述】:
使用MVVLight 开发WPF 应用程序。
在我的模型中,我有:
..an enum 命名为AttributeType:
public enum AttributeType
{
TypeA = 0,
TypeB = 1,
}
..一个Attribute 类,它公开了AttributeType 类型的Type 属性:
public class Attribute : ObservableObject
{
//constructors, other fields etc omitted for brevity
private AttributeType type;
public AttributeType Type
{
get { return type; }
set
{
type = value;
RaisePropertyChanged(() => Type);
}
}
..还有一个DataSet 类,其Attributes 属性类型为List<Attribute>:
public class DataSet : ObservableObject
{
//constructors, other fields etc omitted for brevity
private ObservableCollection<Attribute> attributes;
public ObservableCollection<Attribute> Attributes
{
get { return attributes; }
set
{
attributes = value;
RaisePropertyChanged(() => Attributes);
}
}
}
在我的主窗口中,我有一个DataGrid,它绑定到DataSet.Attributes,并有AutoGenerateColumns="true",例如:
<DataGrid Grid.Row="2" Grid.Column="0" Margin="5" CanUserAddRows="false" AutoGenerateColumns="true" ItemsSource="{Binding DataSet.Attributes}">
每当我通过我的ViewModel 实例化DataSet 类并填充DataSet.Attributes 时,DataGrid 正确地为Attribute.Type 显示DataGridComboBoxColumn 以及所有可能的AttributeType 枚举值。
但是,如果我转AutoGenerateColumns="false" 来设置我自己的列:
<DataGrid Grid.Row="2" Grid.Column="0" Margin="5" CanUserAddRows="false" AutoGenerateColumns="false" ItemsSource="{Binding DataSet.Attributes}">
<DataGrid.Columns>
<DataGridTextColumn Header="name" Width="*" Binding="{Binding Name}" />
<DataGridComboBoxColumn Header="type" Width="*" SelectedItemBinding="{Binding Type}" />
</DataGrid.Columns>
</DataGrid>
..DataGridComboBoxColumn 这次什么也没显示。其他列及其相应的绑定工作正常。我在这里想念什么?
【问题讨论】:
标签: c# .net wpf mvvm-light wpfdatagrid