für eine Anwendung ich bin im Entwickeln im Umgang mit Bluetooth-Geräten. Jedes dieser Geräte hat einen Namen und mehrere Dienste. Ich versuche, sie und ihre Dienste programmatisch zu zeigen.Bindung an eine Liste in einer Klasse
Dazu habe ich eine Klasse mit der Liste der Dienste erstellt. Beim Versuch, jedoch zu binden, scheint die Liste der Dienste vollständig leer zu sein.
XAML:
public class BluetoothDevices
{
public string Name{ get; set;}
//public List<Guid> Services { get; set; }
public List<string> Services { get; set; }
}
XAML:
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" Width="150" />
<ListView ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Services}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
C#:
adapter.ScanForBroadcasts(async (IBlePeripheral peripheral) =>
{
//List<Guid> services = new List<Guid>();
List<string> services = new List<string>();
string devicename = peripheral.Advertisement.DeviceName;
var _services = peripheral.Advertisement.Services;
var servicedata = peripheral.Advertisement.ServiceData;
//services = (_services.ToList());
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
services.Add("i am a string ");
BluetoothDevices.Add(new BluetoothDevices { Name = devicename, Services = services });
});
//BluetoothDevices = new ObservableCollection<BluetoothDevices>(BluetoothDevices.Distinct());
}, TimeSpan.FromSeconds(30));
Verwenden 'ObservableCollection' statt' list' verbindlich. "List" benachrichtigt niemanden, wenn Sie Elemente hinzufügen, sodass Sie nichts sehen, das nach der Erstellung der Benutzeroberfläche hinzugefügt wurde. 'ObservableCollection' tut das. Wenn das nicht behoben wird, binden Sie es wahrscheinlich falsch. Ist 'BluetoothDevices' dein Viewmodel oder etwas anderes? Es sollte 'INotifyPropertyChanged' implementiert werden. Beachten Sie auch Degents richtigen Vorschlag. –
Ich dachte mir, dass das nicht das Problem wäre, da ich die Liste erstelle und dann das Objekt zur observablecollection hinzufüge. EDIT: selbst mit verschachtelten observablecollections funktioniert es nicht. –
Welche beobachtbare Sammlung? Was bedeutet "verschachtelte Observablecollections"? Sagen Sie, dass 'BluetoothDevices' eine ObservableCollection ist? Übrigens ist es immer sicher anzunehmen, dass mindestens eine Ihrer Annahmen über die Ursache des Problems falsch ist - sonst wären Sie nicht hier, um Hilfe zu bitten. –