2016-06-30 2 views
-1

Я пытался связать переменную с WPF. Я использую LINQ для получения данных. Критерии являются уникальным типом int и возвращают одну строку данных, которая имеет 30 столбцов, из которых существует несколько различных типов, которые необходимо вернуть.Как связать переменную с несколькими типами? LINQ

Я получаю эту ошибку InvalidOperationException Class, но я не могу понять, как это исправить?

Это то, что я до сих пор,

internal class DatabaseQueries 
    { 
     public static IEnumerable<int> ModValues(DatabaseDataContext database, int staffNo) 
      { 
       return database.Staff_Mod_TBLs 
        .Where(staff => staff.Staff_No == staffNo).Cast<int>().ToList(); 

      } 
    } 

Это код, который устанавливает переменную,

int staffNumber = 192356; 
      var modTblValue = DatabaseQueries.ModValues(sql, staffNumber); 

И XAML (по какой-то причине я не могу опубликовать все XAML, так что это сокращенная надрез кода.)

<DataGridTemplateColumn.CellTemplate> 
            <DataTemplate> 
             <TextBlock FontWeight="Normal" Text="{Binding Path=modTblValue, UpdateSourceTrigger=PropertyChanged}" /> 
            </DataTemplate> 
           </DataGridTemplateColumn.CellTemplate> 
+4

Свяжите свой 'modTBlValue' как свойство. привязка работает только со свойствами. –

+0

@AbinMathew, я не уверен, что я следую? Извините, все еще изучая все это. – KyloRen

+1

'.Cast ()' - где вы это видели? Идите и изучите 'Select'. 'Select',' Where' - довольно простые вещи, вы не можете использовать LINQ, не зная, по крайней мере, базовые конструкции. –

ответ

4

Создать свойство, как показано ниже,

private string _modTblValue; 
public string modTblValue 
    { 
     get { return _modTblValue ; } 
     set { modTblValue = value; NotifyPropertyChanged(); } 
    } 

Присвоить значение, которое вы получаете от DataBase к modTblValue

modTblValue = DatabaseQueries.ModValues(sql, staffNumber); 

Bind вашей собственности modTblValue с UI

<TextBlock FontWeight="Normal" Text="{Binding Path=modTblValue, UpdateSourceTrigger=PropertyChanged}" /> 

Если вам нужна коллекция вашей собственности для привязки к DataGrid затем создать a class, которые содержат ваши Properties, и предоставите свойство списка вашего класса для привязки как ItemSource вашего DataGrid

Check this too.

+0

Спасибо за помощь, которая очищает часть всего этого, что я делал неправильно. Но я все еще получаю сообщение об ошибке. – KyloRen

+0

Вы имеете в виду запрос LINQ? Какая ошибка? –

+0

Да, запрос LINQ кажется проблемой. Как сказал Иван в комментариях, мне нужно использовать select. Но я не могу пройти мимо ошибки комбайна, когда делаю выбор с выбором. InvalidOperationException Ошибка класса – KyloRen

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