2016-07-29 9 views
0

Ich habe eine ListBox bekam, die auf eine benutzerdefinierte Klasse gebunden ist:Disable ListBox Auswahl durch Benutzer-Schnittstelle nur

public class SelectionModel : BaseNotifyProperyChanged 
{ 
    private bool _selected; 

    public bool IsSelected 
    { 
     get { return _selected; } 
     set 
     { 
      _selected = value; 
      base.RaisePropertyChanged("IsSelected"); 
     } 
    } 
    //.... 
} 

Durch eine Implementierung in der XAML:

<Style TargetType="{x:Type ListBoxItem}"> 
    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/> 
</Style> 

ich deaktivieren möchten Auswahl nur von der Benutzeroberfläche aus, wobei die Datenbindung intakt bleibt, ist das möglich? Ich weiß, dass ich die Auswahl deaktivieren kann, indem ich die ListBoxItems mit einem Stil deaktiviere, aber das macht die Bindung ungültig.

Edit: Es scheint etwas Verwirrung zu sein, so werde ich klären. Ich möchte die Auswahl oder Hervorhebung nicht entfernen, Ich möchte Elemente programmgesteuert auswählen können, aber nicht über die Benutzeroberfläche. Das Deaktivieren von Elementen oder das Ändern von Farben ist also nicht das was ich suche.

+0

Was passiert, wenn Sie einen Trigger hinzufügen, der 'IsSelected' auf eine unidirektionale Bindung setzt? –

+0

Immer noch in der Lage, Elemente über die Benutzeroberfläche auszuwählen. –

+0

nicht sicher, ich verstehe richtig, Sie möchten die Hervorhebung für ausgewählte Artikel entfernen, ist das? – NSGaga

Antwort

1

Können Sie es nicht deaktivieren?

+0

Ich dachte ehrlich, ich habe das versucht, aber anscheinend nicht! Das funktioniert einwandfrei, danke! –

Verwandte Themen