VB.NET - ошибка отображения значений нескольких выбранных элементов из ListBox, заполненного службой WCF с поддержкой Silverlight - PullRequest
0 голосов
/ 24 января 2019

я.Я использую ListBox (называемый «MyList») на странице XAML.Этот ListBox успешно отображает несколько значений из службы WCF с поддержкой Silverlight (получение данных из базы данных SQL Server через класс LINQ to SQL).

ii.Мне нужно захватить несколько значений, выбранных в ListBox и манипулировать данными.

iii.В настоящее время простой TextBox отображает только одно значение из ListBox, даже если я выбрал более одного.

iv.Если я перебираю SelectedItems, TextBox просто отображает имя класса записи, используемого в справочнике услуг.

v.Все, что мне нужно, это текст всех выбранных элементов.

vi.Любая помощь будет принята с благодарностью.

1.Класс записи VB, используемый OperationContract:

Public Class EDRObjectListCBox
    Public SubstationCBox As String
End Class

2.Служба WCF с поддержкой Silverlight:

<OperationContract()>
Public Function GetEDRObjectSubstation() As List(Of EDRObjectListCBox)
    Dim pDatabase As New UniformanceMDEDailyDataClassesDataContext()

    Dim EDRObjectList = _
        (From EDRObject _
            In pDatabase.EDRObjectLists _
            Order By EDRObject.SubstationCBox
            Select EDRObject.SubstationCBox Distinct)

    Dim pEDRSubstationCBox As New List(Of EDRObjectListCBox)

    For Each c In EDRObjectList
        pEDRSubstationCBox.Add( _
            New EDRObjectListCBox With _
            {.SubstationCBox = c.ToString})

    Next

    Return pEDRSubstationCBox.ToList()

End Function

3.Код MainPage.xaml.vb:

Partial Public Class MainPage
    Inherits UserControl

    Private WithEvents pEDRObjectService As New EDRObjectServiceReference.EDRObjectServiceClient()

Private Sub pEDRObjectService_GetEDRObjectSubstation(sender As Object, e As 
   EDRObjectServiceReference.GetEDRObjectSubstationCompletedEventArgs) 
   Handles pEDRObjectService.GetEDRObjectSubstationCompleted

    MyList.ItemsSource = e.Result.ToList()
    MyList.DisplayMemberPath = "SubstationCBox"
    MyList.SelectedValuePath = "SubstationCBox"

End Sub 

5.ListBox XAML:

<ListBox x:Name="MyList" SelectionMode="Multiple" ScrollViewer.VerticalScrollBarVisibility="Visible" HorizontalAlignment="Left" Height="140" Margin="174,221,0,0" VerticalAlignment="Top" Width="194"/>

4.Результаты ListBox при выполнении кода - Код работает как задумано, и ListBox успешно заполняется из таблицы базы данных:

Я могу выбрать несколько элементов в ListBox

Здесь я выбрал 2EE-DS-01, 2GG-DS-01 и 2H4-SP-01.

2EE-DS-01
2GG-DS-01
2H1-SS-02
2H4-SP-01
2H4-SP-02

5.Что я пробовал (этот код выполняется, когда я нажимаю кнопку):

Private Sub ButtonDisplay_Click(sender As Object, e As RoutedEventArgs) Handles ButtonDisplay.Click

For Each i As Object In MyList.SelectedItems
        MyTextBox.Text += i.ToString() & ControlChars.NewLine

Next

'Also Tried this, but it only displays the first selected item, three times (2EE-DS-01 2EE-DS-01 2EE-DS-01):

For Each i In ListBoxBreaker.SelectedItems
    MyTextBox.Text += ListBoxBreaker.SelectedValue().ToString()

End Sub

Ожидаемые результаты в TextBox:

2EE-DS-01, 2GG-DS-01, 2H4-SP-01

Фактические результаты:

UniformanceMDEDaily.EDRObjectServiceReference.EDRObjectListCBox

По какой-то причине отображается имя класса записи?

...