#c# #.net #wpf #entity-framework #data-binding
#c# #.net #wpf #entity-framework #привязка данных
Вопрос:
Я использую Entity Framework, ObjectResult
исходящий из Execute
метода, для привязки данных к элементу управления WPF, как здесь:
using System;
using System.Data;
using System.Data.Objects;
using System.Windows;
using System.Linq;
namespace Microsoft.Samples.Edm
{
/// <summary>
/// Interaction logic for SalesOrders.xaml
/// </summary>
public partial class SalesOrders : Window
{
private AdventureWorksEntities context;
private int customerId = 277;
private void SalesOrdersForm_Loaded(object sender, RoutedEventArgs e)
{
// Instantiate the ObjectContext.
context = new AdventureWorksEntities();
// Define a query that returns orders for a customer.
// Because lazy loading is on by default, SalesOrderDetails
// related to a SalesOrderHeader will be loaded when the query
// is executed.
var query = from o in context.SalesOrderHeaders
where o.CustomerID == customerId
select o;
// Execute the query and bind the result to the OrderItems control.
this.orderItemsGrid.DataContext = ((ObjectQuery)query).Execute(MergeOption.AppendOnly);
}
private void buttonClose_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
public SalesOrders()
{
InitializeComponent();
}
}
}
Пример взят из MSDN
Это работает нормально, но как мне обновить привязку? Либо программно, либо при изменении базы данных?
Ответ №1:
Код SalesOrdersForm_Loaded должен быть отделен от этого события.
Поместите этот код в функцию. и вызовите его при загрузке формы. Теперь вы можете вызывать эту функцию на основе ваших требований.
Я надеюсь, что это имеет смысл.
Редактировать
Вы можете вызвать эту функцию при нажатии кнопки / таймере или любом событии в зависимости от вашего требования обновить привязки