【问题标题】:Why DataGrid does not display data from DB为什么 DataGrid 不显示数据库中的数据
【发布时间】:2017-10-02 15:40:06
【问题描述】:

我在显示表格中的数据时遇到问题。该表有一个字段PositionName 并在Entity Framework Code First 中构建。为了显示我正在使用带有 MVVM 模式元素 DataGrid 的 WPF。 xaml 中的绑定代码:

<DataGrid AutoGenerateColumns="False" 
           x:Name="PositionGrid" Margin="2 2 2 2"
           ItemsSource="{Binding Source = PositionCollection}"                  
           SelectedItem="{Binding ThePosition, Mode=TwoWay}"
           SelectionMode="Single" Height="235">
     <DataGrid.Columns>
         <DataGridTextColumn Binding="{Binding PositionName}"
                             Header="Назва професії"/>
     </DataGrid.Columns>
</DataGrid>

窗口后面的代码

public AddPositionView()
{   
     InitializeComponent();
     DataContext = new PositionViewModel();
}

PositionViewModel 是 ViewModel,代码如下:

 public PositionViewModel()
 {
     _db = new SalDBContext();                         
     ThePosition = new Position();
     _poclog = new PositionLogic();    
     PositionCollection = new ObservableCollection<Position>(_poclog.Get());
 }

db 是处理表格的上下文,ThePosition - 是模型类,_poclog 它基本上是具有处理表单的逻辑的类。 Logic 类具有显示数据的下一个实现。

 internal IEnumerable<Position> Get()
 {
     return _dbContext.Positions.ToList();
 }

代码没有任何例外地工作,它显示表单但网格是空的。调试时PositionCollection 包含表中的所有元素。当这一切都转到调用窗口的代码时,它显示空窗口。在下一个代码之后,它显示空窗口。

 private void PositionShow_Button_Click(object sender, RoutedEventArgs e)
 {
     AddPositionView posview = new AddPositionView();
     posview.Show();
 }

根据调试,当我将停止点放在AddPositionView 上时,它会抛出所有视图模型类,PositionColection 包含 db 中的所有元素,但随后又回到AddPositionViewposview 变为空。为什么会发生?并且 DataGrid 显示空表。 感谢您的帮助。

【问题讨论】:

    标签: c# wpf entity-framework mvvm datagrid


    【解决方案1】:

    PositionCollection 必须是 公共属性 才能绑定到它:

    public PositionCollection { get; private set; }
    

    您还应该将Binding(而不是Source)的Path 设置为属性名称:

    ItemsSource="{Binding Path=PositionCollection}"                  
    

    【讨论】:

    • 哇,谢谢你的问题是路径)PositionCollection 是公开的,实现 OnPropertyChange)谢谢)
    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 2010-10-14
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    相关资源
    最近更新 更多