0

У меня есть LongListSelector в качестве .xaml и я могу заполнить его связывание с собой ItemSource, когда источник заполнена DataContext с помощью одной таблицы из моей базы данных SQL Server CE как это:LongListSelector SelectedItem

Dim row = (From rows In db.Hub 
       Order By rows.HubID Descending 
       Select rows).ToList() 

    Me.MainLongListSelector.ItemsSource = row 

Я, таким образом, в состоянии получить идентификатор выбранного элемента следующим образом:

HubID = CType(MainLongListSelector.SelectedItem, Hub).HubID 

Я также способен связываться с «запросом» DataSource следующим образом:

Dim row = (From ac In db.Activity 
       Join at In db.ActivityType On ac.ActivityTypeID Equals at.ActivityTypeID 
       Select New With {.ID = ac.ActivityID, 
           .Title = ac.Activity1}).ToList() 
       Me.MainLongListSelector.ItemsSource = row 

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

Dim ActID = CType(MainLongListSelector.SelectedItem, Activity).ActivityID '- returns nothing 

Как я должен получить значение (ы) SelectedItem в этом дело?

NB: Я создал анонимные поля (.ID и .Title), потому что это имена, которые я связал в xaml, поэтому LongListSelected заполняется без написания дополнительного кода.

Thanks

ответ

0

Phew !!

я обнаружил, что две вещи:

  1. это HubID = CType (MainLongListSelector.SelectedItem, концентратор) .HubID является вызовом списка (DataContext), в то время как во втором случае выше, я использую список (Аноним). Поэтому я искал List (Of Anonymous) и this подошел!
  2. Теперь я знаю, что могу создать класс для List (Of Anonymous) и правильно называть его свойства, таким образом сделать его доступным вне его методов, например, в моем вопросе «запрос» выше.

Так что ответ я создал класс для моего анонимного списка, объявил его свойства

Public Class AnonList 

Private _id As Integer 
Public Property ID() As Integer 
    Get 
     Return _id 
    End Get 
    Set(ByVal value As Integer) 
     _id = value 
    End Set 
End Property 

Private _title As String 
Public Property Title() As String 
    Get 
     Return _title 
    End Get 
    Set(ByVal value As String) 
     _title = value 
    End Set 
End Property 

Private _desc As String 
Public Property Desc() As String 
    Get 
     Return _desc 
    End Get 
    Set(ByVal value As String) 
     _desc = value 
    End Set 
End Property 

End Class 

и, следовательно, присвоенные им значения ItemSource,

Select New AnonList With {.ID = ac.ActivityID, 

, таким образом, будучи в состоянии получить значения SelectedItem по мере необходимости:

ActivityID = CType(MainLongListSelector.SelectedItem, AnonList).ID 

Получил немного решимости понять это!

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