MVVM Light DataGrid 绑定

Van*_*nel 3 data-binding wpf datagrid mvvm mvvm-light

我正在使用 C#、.NET Framework 4.5.1、MVVM Light 框架和 Entity Framework 6.1.3 开发 WPF。

\n\n

DataGrid在窗口中有这个:

\n\n
<DataGrid x:Name="LevelConfigurationDataGrid" Grid.Column="1" Grid.Row="1" Margin="20,0" ItemsSource="{Binding LevelConfigs}">\n    <DataGrid.Columns>\n        <DataGridTextColumn Binding="{Binding CODE_LEVE}" Header="Nivel"/>\n        <DataGridTextColumn Binding="{Binding CODE_NAME}" Header="Nombre"/>\n        <DataGridTextColumn Binding="{Binding IS_ACTIVE}" Header="\xc2\xbfActiva?"/>\n        <DataGridTextColumn Binding="{Binding CODE_TYPE}" Header="Tipo de c\xc3\xb3digo"/>\n        <DataGridTextColumn Binding="{Binding CODE_SOURCE}" Header="Origen del c\xc3\xb3digo"/>\n        <DataGridTextColumn Binding="{Binding HELPER_CODE_TYPE}" Header="Tipo de Helper Code"/>\n        <DataGridTextColumn Binding="{Binding HELPER_CODE_SOURCE}" Header="Origen del helper code"/>\n        <DataGridTextColumn Binding="{Binding QUANTITY}" Header="Cantidad"/>\n        <DataGridTextColumn Binding="{Binding REMAINING_CODES}" Header="Restantes"/>\n        <DataGridTextColumn Binding="{Binding TRZ_ENDPOINT}" Header="TRZ IP"/>\n        <DataGridTextColumn Binding="{Binding TRZ_ENDPORT}" Header="TRZ Puerto"/>\n    </DataGrid.Columns>\n</DataGrid>\n
Run Code Online (Sandbox Code Playgroud)\n\n

以及MainViewModel

\n\n
public ObservableCollection<CODE_LEVEL_CONFIGURATION> LevelConfigs\n{\n    get { return m_LevelConfigs; }\n    set\n    {\n        m_LevelConfigs = value;\n        RaisePropertyChanged("LevelConfigs");\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

以及CODE_LEVEL_CONFIGURATION

\n\n
public class CODE_LEVEL_CONFIGURATION\n{\n    public byte CODE_LEVEL { get; set; }\n    public string LEVEL_NAME { get; set; }\n    public bool IS_ACTIVE { get; set; }\n    public byte CODE_TYPE { get; set; }\n    public byte CODE_SOURCE { get; set; }\n    public byte? HELPER_CODE_TYPE { get; set; }\n    public byte? HELPER_CODE_SOURCE { get; set; }\n    public int QUANTITY { get; set; }\n    public int REMAINING_CODES { get; set; }\n    public string TRZ_ENDPOINT { get; set; }\n    public int? TRZ_ENDPORT { get; set; }\n\n    public virtual ICollection<CODES> Codes { get; set; }\n    public virtual ICollection<HELPER_CODES> HelperCodes { get; set; }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,当我加载数据时,DataGrid我会得到更多在 上定义的列XAML。我得到了我的列和另外 13 列(针对每个CODE_LEVEL_CONFIGURATION属性)。

\n\n

我究竟做错了什么?

\n

Car*_*ine 5

尝试将AutoGenerateColumns设置为 False

<DataGrid x:Name="LevelConfigurationDataGrid"  AutoGenerateColumns="False" 
          Grid.Column="1" Grid.Row="1" Margin="20,0" ItemsSource="{Binding LevelConfigs}">
    <DataGrid.Columns>
        ...
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)