2009-09-22 7 views
21

Was habe ich?Ausgewähltes Element verliert den Stil, wenn der Fokus in WPF verschoben wurde. ListBox

Ich habe eine ListBox mit Elementen aus einer XML-Datei gefüllt. Gegeben ein DynamicResource für Style Eigenschaft und geschriebener Auslöser für IsSelected in ItemContainerStyle.

Was möchte ich tun?

Ich möchte das ausgewählte Objekt hervorgehoben halten, auch nachdem der Fokus aus dem ListBox verschoben wurde.

Mit welchem ​​Problem habe ich konfrontiert?

Wenn ich ein Element auswähle, funktioniert der in IsSelected angegebene Stil. Aber wenn ich den Fokus aus dem Listenfeld verschiebe (drücke die Tabulatortaste oder klicke auf ein anderes Steuerelement), verliert der ausgewählte Gegenstand seinen Stil. Gibt es eine Möglichkeit, den ausgewählten Stil zu behalten?

Vielen Dank im Voraus!

+0

Warum hast du meine bearbeiten wiederherstellen? – SLaks

+0

Hoppla !! es war aus Versehen. Es tut uns leid! – Vijay

+0

Hallo, ich stehe vor dem gleichen Problem und habe versucht die Lösung gepostet, aber ich kann das Problem nicht lösen. Können Sie Ihren Beitrag so bearbeiten, dass er die Lösung enthält? danke – jpsstavares

Antwort

1

Wenn Sie nur die Hintergrundfarbe festlegen, ersetzen Sie ControlBrush für die ListBox, wie unter this answer.

+1

Ok. Lass es mich ausprobieren. Vielen Dank! – Vijay

+1

Dies ist eine schlechte Idee - für Benutzer mit deaktivierter visueller Thematisierung wird dies viele Dinge vermasseln - die Bildlaufleisten und Schaltflächen ändern sich zu der aktuellen Hervorhebungsfarbe (dies ist standardmäßig blau - also Ihr Inneres) Buttons und ListView Scrollbalken werden blau, sehr schlecht!). – BrainSlugs83

28

Die Antwort, auf die verwiesen wird, wird in einigen Fällen das Problem lösen, ist aber nicht ideal, da sie bricht, wenn das Steuerelement deaktiviert/schreibgeschützt ist und die Farbschemata außer Kraft setzt, anstatt sie auszunutzen. Mein Vorschlag ist, die folgende in der List-Box Tags hinzuzufügen:

<ListBox....> 
    <ListBox.Resources> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="ListBoxItem"> 
          <Border Name="Border" Padding="2" SnapsToDevicePixels="true"> 
           <ContentPresenter /> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsSelected" Value="true"> 
            <Setter TargetName="Border" Property="Background" 
              Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
     </Style> 
    </ListBox.Resources> 
</ListBox> 

Was wird dies tun, um die Highlight-Hintergrundfarbe auf dem Listenfeld Artikel gesetzt wird, wenn es (unabhängig von dem Steuerzustand) ausgewählt ist.

Meine Antwort basiert auf Hilfe von den Antworten bereits auf diese Antworten gegeben, zusammen mit dem folgenden Blog: http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspx

+0

dieser Ansatz funktioniert gut. Vielen Dank! –

+0

Dies sollte die akzeptierte Antwort sein. – Rich

Verwandte Themen