簡體   English   中英

綁定數據網格

[英]Binding a DataGrid

我已經使用Entity Framework和WPF創建了代碼優先的C#項目。 我創建了一個名為Personel Entity的實體。 我將那個實體拖放到MainWindow,但是它不顯示任何數據。 我想我必須在MainWindow.xaml.cs文件中做一些事情,但我不知道該怎么辦。 這是xaml中的DataGrid代碼:

<DataGrid x:Name="personelEntityDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Margin="19,259,18,10" RowDetailsVisibilityMode="VisibleWhenSelected">
    <DataGrid.Columns>
        <DataGridTextColumn x:Name="addressColumn" Binding="{Binding Address}" Header="Address" Width="SizeToHeader"/>
        <DataGridTextColumn x:Name="ageColumn" Binding="{Binding Age}" Header="Age" Width="SizeToHeader"/>
        <DataGridTextColumn x:Name="idColumn" Binding="{Binding Id}" Header="Id" Width="SizeToHeader"/>
        <DataGridTextColumn x:Name="nameColumn" Binding="{Binding Name}" Header="Name" Width="SizeToHeader"/>
        <DataGridTextColumn x:Name="phoneNumberColumn" Binding="{Binding PhoneNumber}" Header="Phone Number" Width="SizeToHeader"/>
    </DataGrid.Columns>
</DataGrid>

這是MainWindow.xaml.cs文件中的代碼:

public partial class MainWindow : Window
{
    private PersonelContext _context = new PersonelContext();

    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        System.Windows.Data.CollectionViewSource personelEntityViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("personelEntityViewSource")));    
    }
}

這是PersonelContext.cs文件中的代碼:

namespace Personel
{
    public class PersonelContext : DbContext
    {
        public DbSet<PersonelEntity> Personels { get; set; }
    }
}

代碼中沒有其他關於datagrid的內容。 我知道我需要添加一些東西,但是我不知道要添加什么。 你能告訴我該怎么辦嗎?

基本上,每個綁定都基於特定FrameworkElementDataContext構建。 您的情況是DataGrid 數據未更新,因為您尚未初始化UseControl數據上下文。
請不要將其與與控件DataContext無關的Entity Frameworks DbContext混淆。

因此,要使屏幕正常工作,只需Window_Loaded添加到Window_Loaded方法中:

this.DataContext = _context.Personels.ToList();

在Xaml中進行如下更改

ItemSource= {Binding}

to 

ItemSource= {Binding Path=.}

並在后面的代碼中

personelEntityDataGrid.ItemSource =_context.Personels.ToList();

(如果以上方法無效,請嘗試“或”部分)。

要么

personelEntityDataGrid.DataContext =_context.Personels.ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM