wpf - MVVM Light DataGrid 绑定(bind)

标签 wpf mvvm data-binding datagrid mvvm-light

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

我在一个窗口中有这个 DataGrid:

<DataGrid x:Name="LevelConfigurationDataGrid" Grid.Column="1" Grid.Row="1" Margin="20,0" ItemsSource="{Binding LevelConfigs}">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding CODE_LEVE}" Header="Nivel"/>
        <DataGridTextColumn Binding="{Binding CODE_NAME}" Header="Nombre"/>
        <DataGridTextColumn Binding="{Binding IS_ACTIVE}" Header="¿Activa?"/>
        <DataGridTextColumn Binding="{Binding CODE_TYPE}" Header="Tipo de código"/>
        <DataGridTextColumn Binding="{Binding CODE_SOURCE}" Header="Origen del código"/>
        <DataGridTextColumn Binding="{Binding HELPER_CODE_TYPE}" Header="Tipo de Helper Code"/>
        <DataGridTextColumn Binding="{Binding HELPER_CODE_SOURCE}" Header="Origen del helper code"/>
        <DataGridTextColumn Binding="{Binding QUANTITY}" Header="Cantidad"/>
        <DataGridTextColumn Binding="{Binding REMAINING_CODES}" Header="Restantes"/>
        <DataGridTextColumn Binding="{Binding TRZ_ENDPOINT}" Header="TRZ IP"/>
        <DataGridTextColumn Binding="{Binding TRZ_ENDPORT}" Header="TRZ Puerto"/>
    </DataGrid.Columns>
</DataGrid>

MainViewModel 上:

public ObservableCollection<CODE_LEVEL_CONFIGURATION> LevelConfigs
{
    get { return m_LevelConfigs; }
    set
    {
        m_LevelConfigs = value;
        RaisePropertyChanged("LevelConfigs");
    }
}

CODE_LEVEL_CONFIGURATION 上:

public class CODE_LEVEL_CONFIGURATION
{
    public byte CODE_LEVEL { get; set; }
    public string LEVEL_NAME { get; set; }
    public bool IS_ACTIVE { get; set; }
    public byte CODE_TYPE { get; set; }
    public byte CODE_SOURCE { get; set; }
    public byte? HELPER_CODE_TYPE { get; set; }
    public byte? HELPER_CODE_SOURCE { get; set; }
    public int QUANTITY { get; set; }
    public int REMAINING_CODES { get; set; }
    public string TRZ_ENDPOINT { get; set; }
    public int? TRZ_ENDPORT { get; set; }

    public virtual ICollection<CODES> Codes { get; set; }
    public virtual ICollection<HELPER_CODES> HelperCodes { get; set; }
}

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

我做错了什么?

最佳答案

尝试设置 AutoGenerateColumns为假

<DataGrid x:Name="LevelConfigurationDataGrid"  AutoGenerateColumns="False" 
          Grid.Column="1" Grid.Row="1" Margin="20,0" ItemsSource="{Binding LevelConfigs}">
    <DataGrid.Columns>
        ...
    </DataGrid.Columns>
</DataGrid>

关于wpf - MVVM Light DataGrid 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30434703/

相关文章:

c# - 在这个简单的 WPF 应用程序中实现进度条

Windows 10中的WPF ListBox高亮显示

c# - 通过数据库使用 ViewModel 填充 DataGrid

c# - 如何通过在页面上显示半透明控件来禁用Windows Phone上的所有控件?

asp.net - 将 ObjectDataSource 绑定(bind)到数据访问层中的现有方法

c# - ListBox 上的 WPF 动画

c# - 如果数据库中的值发生变化,如何持续更新该值

c# - 如何设置我的对话框的大小取决于主窗口(明智的 MVVM)

asp.net - 项目模板和布局模板之间的区别

data-binding - 分配新值后将 ObservableCollection 绑定(bind)到 DataGrid