Laden...

[gelöst]ListBoxItem sendet keine Aktualisierung an das ViewModel

Erstellt von Dijon vor 11 Jahren Letzter Beitrag vor 11 Jahren 4.031 Views
D
Dijon Themenstarter:in
63 Beiträge seit 2011
vor 11 Jahren
[gelöst]ListBoxItem sendet keine Aktualisierung an das ViewModel

Moin Moin zusammen,

folgende Situation Ich hab ne ObservableCollection von ViewModeln die an eine ListBox gebunden werden soll.
Ich habe das mal so versucht und es funktioniert folgendes nicht:

Ich kann zwar Elemente in der ListBox auswählen aber wenn ich das getan habe wird das ViewModel bzw das Property des ViewModels nicht Aktuallisiert , wenn ich die ObservableCollection
z.B. an RadioButton oder Checkboxen binde wird der Status automatisch geändert das funktioniert alles wunderbar aber halt nicht bei der Listbox (ListView hab ich auch ausprobiert geht auch nicht).


<ListBox SelectionMode="Multiple" Width="150" MaxHeight="100" ItemsSource="{Binding Path=ListBoxValues}" IsSynchronizedWithCurrentItem="True">
  <ListBox.ItemTemplate>
     <DataTemplate DataType="{x:Type ListBoxItem}">
        <ListBoxItem Content="{Binding Path=DisplayName}" IsSelected="{Binding Path=IsSelected,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

Kann mir vielleicht jemand helfen?

Gruß

Dijon

5.658 Beiträge seit 2006
vor 11 Jahren

Hi Dijon,

<DataTemplate DataType="{x:Type ListBoxItem}">  

Wenn sich in deiner Collection ListBoxItems befinden, kannst du auf ein DataTemplate verzichten. Ich nehme aber mal an, es handelt sich um ViewModels, dann solltest du aber auch den entsprechenden Datentyp angeben.

wenn ich die ObservableCollection z.B. an RadioButton oder Checkboxen binde

Wie bindest du eine Auflistung an eine CheckBox oder an ein RadioButton? Auflistungen kann man nur an ItemsControls binden 🤔

Christian

Weeks of programming can save you hours of planning

D
Dijon Themenstarter:in
63 Beiträge seit 2011
vor 11 Jahren

Das hier hab ich zum testen geschrieben.


<ItemsControl ItemsSource="{Binding Path=ListBoxValues}" >
   <ItemsControl.ItemTemplate>
      <DataTemplate>
         <RadioButton Content="{Binding Path=DisplayName}" GroupName="Location" IsChecked="{Binding Path=IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="0,0,8,0"/>
          </DataTemplate>
                </ItemsControl.ItemTemplate>
              <ItemsControl.ItemsPanel>
           <ItemsPanelTemplate>
        <WrapPanel Margin="2,5" />
      </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>
</ItemsControl>

und wenn ich die ObservableCollection an dieses ItemsControl binde werden mir alle Elemente der Collection angezeigt und wenn ich einen Auswähle dann wird das auch regestriert.

Wie gesagt eine Änderung der Auswahl hat nur bei der ListBox keinen Effekt auf das IsSelected Property

5.658 Beiträge seit 2006
vor 11 Jahren

Hi Dijon,

hast du gelesen, was ich zuerst geschrieben hab? Du mußt doch selbst erkennen, was du in beiden Beispielen anders gemacht hast, und das ist die Zuweisung des DataType-Propertys.

Christian

Weeks of programming can save you hours of planning

D
Dijon Themenstarter:in
63 Beiträge seit 2011
vor 11 Jahren

<DataTemplate DataType="{x:Type vm:ListBoxItemViewModel}">

meinst du das in etwa so? wenn ja das funktioniert nicht, ansonsten kann ich dir nicht folgen.

Gruß Dijon

5.658 Beiträge seit 2006
vor 11 Jahren

Funktioniert nicht ist keine Fehlerbeschreibung, die irgendjemanden weiterhelfen würde, am allerwenigsten dir: [Hinweis] Wie poste ich richtig?

Wenn du mir nicht folgen kannst, kannst du auch in der Doku nachlesen, wie man ein DataTemplate verwendet.

Weeks of programming can save you hours of planning

D
Dijon Themenstarter:in
63 Beiträge seit 2011
vor 11 Jahren

mit funktioniert nicht meine ich das was ich in vorherigen Post schon geschrieben habe das das ViewModel beim Anklicken eines ListBoxItems nicht aktuallisiert wird.

Es geht mir nicht darum das ich nicht weiß wie man ein DataTemplate nutzt sonder das ich an deiner Aussage nicht eindeutig identifizieren kann was du meinst.

Gruß Dijon

5.658 Beiträge seit 2006
vor 11 Jahren

Deine Fehlerbeschreibung ist auch weiter oben nicht besonders hilfreich, und deinen Code vom ViewModel zeigst du auch nicht. Meine Glaskugel sagt mir daher, daß du mal in das Ausgabefenster schauen solltest, ob da nicht irgendwelche Binding-Fehler stehen, bzw. mal das Binding mit einen DebugConverter überprüfen solltest.

Weeks of programming can save you hours of planning

D
Dijon Themenstarter:in
63 Beiträge seit 2011
vor 11 Jahren

Wie soll ich den Fehler besser beschreiben als "Wenn ich ein ListBoxItem anklicke in einer Listbox wird das nicht an das ViewModel weiter gegeben." das ist was passiert bzw was nicht passiert.

wofür brauchst du das ViewModel ? ich hab doch gesagt wenn ich die Items der Collection an Checkboxen oder an Radiobuttons binde so wie hier.


<ItemsControl ItemsSource="{Binding Path=ListBoxValues}" >
   <ItemsControl.ItemTemplate>
      <DataTemplate>
         <RadioButton Content="{Binding Path=DisplayName}" GroupName="Location" IsChecked="{Binding Path=IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="0,0,8,0"/>
          </DataTemplate>
                </ItemsControl.ItemTemplate>
              <ItemsControl.ItemsPanel>
           <ItemsPanelTemplate>
        <WrapPanel Margin="2,5" />
      </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>
</ItemsControl>

Dann funktioniert das, dann reagiert das ganze miteinander und der zeigt mir meine lustigen sprüche an der Konsole an.

Aber wenn ich das selbe Binding mit der ListBox versuche geht es nicht. Ich hab ja schon auf die Art die Collection die die ViewModel hält an andere ItemsControls gebunden und bei allen anderen funktioniert das Binding wunderbar wenn ich ein Element Selectiere wird das vom ViewModel regestriert und wenn ich es wieder deselectiere dann wird der Status von IsSelected (ViewModel Property) auf false gesetzt, also kann es nicht am ViewModel liegen. Es ist auch kein schreib fehler da ich das mindestens 100 mal geprüft habe und mit Copy & Past das ganze rumkopiert habe.
Und noch mal , mit allen anderen Controls geht es nur mit der ListBox und ListView geht es eben nicht.

Warum geht es nicht weil der Click in die ListBox der ein Element Aktiviert nicht weiter gegeben wird
und die Frage die sich stellt ist warum das nicht weitergegeben wird wenn das doch bei allen anderen geht.

Aber ich gebe dir auch gerne das ViewModel nur daran liegt es nicht.
[Edit]
Das ViewModel ist etwas heruntergebrochen worden da die ganze Klassestrucktur hier den Ramen etwas sprengen würde.
[/Edit]


public class ListBoxItemViewModel : INotifyPropertyChanged, INotifyPropertyChanging
    {

        private bool _isSelected;
        public bool IsSelected
        {
            get
            {
                return _isSelected;
            }
            set
            {
                if (value == _isSelected)
                    return;
                
                OnPropertyChanging("IsSelected");
                _isSelected = value;
                OnPropertyChanged("IsSelected");
            }
        }

        private string _displayName;
        public virtual string DisplayName 
        {
            get
            {
                return _displayName;
            }
            protected set 
            {
                OnPropertyChanging("DisplayName");
                _displayName = value;
                OnPropertyChanged("DisplayName");
            }
        }

         public event PropertyChangingEventHandler PropertyChanging;
         protected virtual void OnPropertyChanging(string propertyname)
        {
            this.VerifyPropertyName(propertyname);

            PropertyChangingEventHandler handler = this.PropertyChanging;

            if (handler != null)
            {
                var e = new PropertyChangingEventArgs(propertyname);
                handler(this, e);
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyname)
        {
            this.VerifyPropertyName(propertyname);

            PropertyChangedEventHandler handler = this.PropertyChanged;

            if (handler != null)
            {
                var e = new PropertyChangedEventArgs(propertyname);
                handler(this, e);
            }
        }
    }

Gruß

Dijon

5.658 Beiträge seit 2006
vor 11 Jahren

Hi Dijon,

wir drehen uns hier leider im Kreis. Du sagst die ganze Zeit, es funktioniert doch nur mit der ListBox nicht, aber du verwendest zum Testen zwei unterschiedliche XAML-Markups.

Du sagst die ganze Zeit, es geht nicht, schreibst aber nicht, ob du DataBinding-Fehler im Ausgabefenster angezeigt bekommst oder ob der Wert tatsächlich ans ViewModel weitergereicht wird.

Du hast einen Debugger zur Verfügung, ein Ausgabefenster und alle anderen Werkzeuge, die du brauchst. Ich hab dir zwei Tips gegeben, die du offenbar ignorierst, deshalb ist für mich die Diskussion an dieser Stelle beendet.

Christian

Weeks of programming can save you hours of planning

D
Dijon Themenstarter:in
63 Beiträge seit 2011
vor 11 Jahren

Christian wenn ich irgendeine Anzeige im Debugger hätte oder sonst eine anderen Hinweis dann hätte ich den hier hin geschrieben aber da steht nix. Ich kann dir nicht etwas geben das ich nicht habe.


"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xaml\v4.0_4.0.0.0__b77a5c561934e089\System.Xaml.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_32\PresentationCore\v4.0_4.0.0.0__31bf3856ad364e35\PresentationCore.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework\v4.0_4.0.0.0__31bf3856ad364e35\PresentationFramework.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
Der Thread 'vshost.NotifyLoad' (0x11e4) hat mit Code 0 (0x0) geendet.
Der Thread '<Kein Name>' (0x1668) hat mit Code 0 (0x0) geendet.
Der Thread 'vshost.LoadReference' (0x200) hat mit Code 0 (0x0) geendet.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework.Aero\v4.0_4.0.0.0__31bf3856ad364e35\PresentationFramework.Aero.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationCore.resources\v4.0_4.0.0.0_de_31bf3856ad364e35\PresentationCore.resources.dll" geladen
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework-SystemXml\v4.0_4.0.0.0__b77a5c561934e089\PresentationFramework-SystemXml.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework-SystemXmlLinq\v4.0_4.0.0.0__b77a5c561934e089\PresentationFramework-SystemXmlLinq.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\UIAutomationTypes\v4.0_4.0.0.0__31bf3856ad364e35\UIAutomationTypes.dll" wurde geladen, das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"HomeWindow.vshost.exe" (Verwaltet (v4.0.30319)): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework.resources\v4.0_4.0.0.0_de_31bf3856ad364e35\PresentationFramework.resources.dll" geladen

Das ist im endeffekt die ganze Debug ausgabe während der Laufzeit. und viel mehr kommt da nicht ausser Konsolen ausgaben die ich definiert habe wenn ich auf nen Button oder so klicke.

Gruß Dijon

5.658 Beiträge seit 2006
vor 11 Jahren

Daß du keine Fehlermeldung im Ausgabefenster hast, hast du bisher nicht erwähnt. Das heißt aber nur, daß das DataBinding entweder funktioniert, oder gar nicht erst aufgerufen wird. Deshalb ist es deine Aufgabe, zu überprüfen, ob der Wert auch im ViewModel geändert wird. Das hast du bisher unterlassen, obwohl ich dir den Hinweis mit dem DebugConverter gegeben hab. Außerdem hast du wie gesagt einen Debugger mit Breakpoints und Einzelschritt-Debugging, das sollte ausreichen, um dem Problem auf die Spur zu kommen: How to debug with VisualStudio
Christian

Weeks of programming can save you hours of planning

D
Dijon Themenstarter:in
63 Beiträge seit 2011
vor 11 Jahren

Okay als 1. wenn ich Fehlermeldungen in der Konsole gehabt hätte , hätte ich das von anfang an gesagt, ich dachte das ich eben keine Fehlermeldung Poste spricht es für sich das ich keine bekomme.

Das Binding, das habe ich bisher nicht erwähnt und das tut mir leid, funktioniert soweit das wenn ich über den behindcode das Property IsSelected aus dem ViewModel auf true setze das dann auch in der ListBox das Element selectiert wird und wenn ich über den BehindCode das ganze wieder auf False setze dann wird die Auswahl deselectiert. Das Problem liegt irgendwo bei der ListBox oder dem ListBoxItem.

Den DebugConverter konnte ich noch nicht verwenden da das bei mir noch nicht wirklich rundläuft aber ich bin dran weil das meine einzige Hoffnung ist noch etwas zu finden.

Gruß Dijon

[Edit]
Mit dem Debugger für den C# Code komm ich nicht weiter da wie gesagt, wenn ich auf ein ListBoxItem in der ListBox klicke garkein C# Code ausgeführt wird (wie schon mehrmals gesagt) und ja das hab ich dadurch herausgefunden das ich versucht habe zu debuggen aber der einfach keinen Code ausgeführt hat. und ja das hab ich auch nicht erwähnt da ich es für offensichtlich hielt.
[/Edit]

5.658 Beiträge seit 2006
vor 11 Jahren

Nein, es liegt nicht an der ListBox und auch nicht am ListBoxItem.
Du hast also ein Breakpoint in den Setter des IsSelected-Propertys erstellt, und dort wird nicht reingesprungen? Das hättest du nicht erwähnen können?
Ansonsten kannst du nicht debuggen, weil "nicht alles rund läuft"? 🤔

Sorry, aber so kann man dir einfach nicht helfen...

Weeks of programming can save you hours of planning

1.378 Beiträge seit 2006
vor 11 Jahren

Wieso wird hier so lange herumphilosophiert, wenn eindeutig klar ist, dass die ListBox schlichtweg falsch verwendet wird. (Sieht man im 1. Post):

Weil:

  • In einer ListBox, dass ItemTemplate bereits einem ListBoxItem gehört. Man erzeugt prinzipiell nie eigene ListBoxItems - das macht die ListBox für dich und wendet darauf dann dein DataTemplate an. Daher macht auch das Setzen der IsSelected Property auf dein ListBoxItem keinen Sinn, weil es einfach das Falsche ist.

  • Um es richtig zu machen, musst du einen Style fürs ListBoxItem definieren und dort das Binding für IsSelected reinpacken.

Das ganze hättest du aber auch mit 5 min. Googlen auch gefunden.

<ListBox SelectionMode="Multiple" Width="150" MaxHeight="100" ItemsSource="{Binding Path=ListBoxValues}" IsSynchronizedWithCurrentItem="True">
  <ListBox.Resources>
    <Style TargetType="ListBoxItem">
      <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
    </Style>
  </ListBox.Resources>

  <ListBox.ItemTemplate>
     <DataTemplate DataType="{x:Type ListBoxItem}">
        <TextBlock Text="{Binding Path=DisplayName}" />
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

Lg, XXX

D
Dijon Themenstarter:in
63 Beiträge seit 2011
vor 11 Jahren

ja ich habe in den setter einen breakpoint gesetzt und nein er ist nicht reingesprungen wenn das angesteuert habe über UI, wenn ich den Setter genutzt habe im BehindCode dann wurde der Breakpoint ausgelöst.
Auch mit dem XAML Debugging (DebugConverter) ist es so , wenn ich auf der UI in der ListBox was auswähle dann wird nichts ausgelöst , wenn ich über den BehindeCode den Wert im IsSelected (ViewModel) manipuliere dann regestriert der das und hält dann auch am Breakpoint.

Wie gesagt ich habe es nicht erwähnt da ich es für offensichtlich hielt das man diese Arbeit zu erst macht bevor man ein Topic in einem Forum aufmacht.

@xxxprod: Ich google hier seit zwei tagen rum und habe dort bisher keinen weg gefunden der das ganze so handelt wie ich das gerne hätte. Auch deine Lösung war leider nicht so wie ich das haben wollte da er nur den Text beim Selectieren makierte und nicht die ganze Zeile ich hab es aber so lösen können.


<ListBox SelectionMode="Multiple" Width="150" MaxHeight="100" ItemsSource="{Binding Path=ListBoxValues}" IsSynchronizedWithCurrentItem="True" >
  <ListBox.Resources>
     <Style TargetType="{x:Type ListBoxItem}">
        <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
        <Setter Property="Content" Value="{Binding DisplayName}"/>
     </Style>
   </ListBox.Resources>
</ListBox>

Danke MrSparkle und Danke xxxprod für eure hilfe

Gruß Dijon