2014-08-28 4 views
0

У меня есть DataGrid сгенерированный XAML кода, как это:Xaml DataGrid привязки из таблицы базы данных

<DataGrid Name="DonneesBrutes" ItemsSource="{Binding Resultat}" Margin="10,65,0,0" AutoGenerateColumns="True" ></DataGrid> 

Я пытаюсь связать это с одной таблицы моей базы данных, базы данных с именем BDDInterne и таблицы с именем Resultat. Я создал эту базу данных с помощью Entity Framework 5

я нашел свойство

ItemsSource="{Binding ...}" 

, но я видел только примеры с DATAS, созданный на xaml.cs, а не с таблицей из базы данных.

Надеюсь, что я дал достаточно информации. Я, конечно, могу обновить свой пост, если что-то не хватает.

Если кто-то уже сделал такую ​​привязку, это могло мне помочь.

Заранее спасибо.

Edit1:

Это код, который генерирует Resultat:

public partial class Resultat 
{ 
    public string NomTable { get; set; } 
    public string Groupe_D_alerte { get; set; } 
    public string NomChamp { get; set; } 
    public string TOTMPMRQ { get; set; } 
    public string SiModifie { get; set; } 
    public string LibelléTOTAvant { get; set; } 
    public string LibelléTOTApres { get; set; } 
    public string Remarque { get; set; } 
} 
+0

, пожалуйста, также передайте код для создания/получения 'Resultat' – pushpraj

+0

. Если вы хотите напрямую ссылаться на базу данных,' EntityFramework' является обычным способом для этого: http://msdn.microsoft.com/en-us/data /jj574514.aspx – Damascus

+0

@ Дамасские звуки Я не объявлял DataContext, это одна из моих ошибок, я полагаю. – Kraenys

ответ

0

Вы не связываются напрямую к базе данных с EF.

Как бы подойти к нему (используя MVVM шаблон):

  1. в DataGrid на мой взгляд, будет связывать ItemsSource к собственности на моем ViewModel, который будет коллекция класса, что-то вроде ResultatCollection. Столбцы в этом datagrid будут привязываться к свойствам этого типа класса.
  2. моя виртуальная машина будет использовать вызов службы, которая использует EntityFramework для заполнения этого ResultatCollection, с запросом, подходящим для того, что я пытаюсь отобразить. Для вас, может быть, это все.

В декларациях ViewModel собственности:

private ObservableCollection<Resultat> _resultatCollection; 
public ObservableCollection<Resultat> ResultatCollection 
{ 
    get { return _resultatCollection; } 
    set 
    { 
     if (value == _resultatCollection) return; 
     _resultatCollection = value; 
     RaisePropertyChanged(() => ResultatCollection); 
    } 
} 

В какой-то момент в виртуальной машине я позвонить в службу, которая возвращает мои данные, а затем, когда она имеет возвращать данные я заполнить мою коллекцию с результатами, что-то вроде этого:

ResultatCollection = new ObservableCollection(loadOp.Entities); 

И да, все это предполагает, что DataContext мнение, является ViewModel ...

+0

Где мне написать 'ResultatCollection = new ObservableCollection (loadOp.Entities);'? Если я напишу его из 'public ObservableCollection ResultatCollection', у меня много ошибок, и если я его запишу, у меня есть A get или set accessor.С другой стороны, 'RaisePropertyChanged' не существует в текущем контексте. – Kraenys

+0

Вы вызываете свое обслуживание (возможно, в конструкторе вашей виртуальной машины, возможно, управляемое действием пользователя). Обычно это будет асинхронно. В возврате от этого асинхронного (или если вы используете await-async pattern, вы просто ждете результата), вы получите результаты. Для меня эти результаты возвращаются как loadOp с свойством Entities (потому что я использую службы RIA). Для вас они могут быть в другой форме. – Mashton

+0

Итак, вы не можете просто скопировать мой код, я показал его как пример нескольких ключевых моментов. Вам нужно будет адаптировать его к своим обстоятельствам после того, как вы ответили на некоторые вопросы, такие как: а) как получить мои результаты (б) Я использую MVVM – Mashton

Смежные вопросы