| 

.NET C# Java Javascript Exception

2
Hallo,

ich weiß nicht mehr was ich machen soll. In einer Listbox werden die Einträge erst angezeit, wenn ich die Fenstergröße verändere.

In der xaml-Datei sieht es wie folgt aus:
<ListBox 
ItemsSource="{Binding lst_Clients, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedItem="{Binding Client, Mode=TwoWay}"
Grid.Row="1"
HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Stretch" />


Im ViewModel habe ich es wie folgt gemacht:
Public Property lst_Clients As List(Of String)
Get
Return _lst_Clients
End Get
Set(value As List(Of String))
_lst_Clients = value
NotifyPropertyChanged("lst_Clients")
End Set
End Property


Trotzdem funktioniert es nicht.

Kann mir jemand weiterhelfen?

Vielen Dank
News:
21.10.2014
schnowboard 237 6
1
List ist nicht Observable. Veränderungen bekommt also das UI nicht mit. Du musst List durch eine ObservableCollection ersetzen.
– Gast 22.10.2014
1 Antwort
1
Ich nehme an, dass du den Listeninhalt ersetzen willst. Warum der Fehler auftritt, weiß ich nicht, aber ich kann dir zumindest sagen, das ein setter für ein Listenobjekt zumindest untypisch ist (prinzipiell könnte ja jemand dann lst_Clients = null aufrufen und dein ganzes ViewModel würde (mit hoher Wahrscheinlichkeit) auseinanderfallen.
Meine Empfehlung:
- den Setter rausnehmen
- die ganze Lebenszeit des ViewModels mit einer im Constructor erstellten Instanz von _lst_Clients verbringen
- Austausch aller Elemente über .Clear() und .AddRange()
- setzt allerdings voraus, dass deine Liste eine ObservableCollection ist

Außerdem ist mir grade noch aufgefallen dass du ItemsSource als TwoWay-Binding aufsetzt, vielleicht ist da auch der Fehler? Prinzipiell sollte der Listeninhalt einzig vom ViewModel kontrolliert werden und deshalb das Binding OneWay sein.
21.10.2014
LunaticShade 507 4

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH