я.Я использую 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
По какой-то причине отображается имя класса записи?