Hyperlinks bleiben inaktiv nach isEnabled = true übergeordnete Steuerungseinstellung

StackOverflow https://stackoverflow.com/questions/2499415

  •  21-09-2019
  •  | 
  •  

Frage

Ich habe ein TabItem contanining ein Listenfeld bekam, die eine obeservable Sammlung meiner Feeds Klasse als Element Quelle. Wenn ich aufzufrischen / laden Sie die RSS-Feeds in die Sammlung, die ich so das Hauptfenster deaktivieren möchten, dass der Benutzer sich nicht andere Dinge zu klicken, gehen kann, während dieser Prozess läuft. Also habe ich tbCtrl.isEnabled=false; auf meine Registerkarte Steuerelement in dem Formular. Dann weisen auf die eine eigene Oberfläche Veranstaltung einen Event-Handler, der ausgelöst wird, nachdem alle die Feeds geladen werden.

Das alles funktioniert gut, aber die Hyperlinks für die Ergebnisse, die derzeit auf der Registerkarte angezeigt werden nie wieder freigegeben (auch nicht die nächsten paar, die sind aus der Sicht aufgrund der Listenfeld-Größe) erhalten. Alle anderen Ergebnisse weiter unten sind in Ordnung, ebenso wie die Ergebnisse auf der anderen Registerkarte.

Ich habe InvalidateVisual auf der Registerkarte Steuerung versuche Aufruf nachdem alles fertig ist, um zu sehen, ob das einen Unterschied macht, aber das scheint keine Veränderung zu bewirken.

Ich könnte es verstehen, wenn es alle Hyperlinks ist es zu tun, oder nur die aktuell angezeigte, aber ich verstehe nicht, warum diejenigen, die von Scroll sind out sind ebenfalls nicht arbeiten.

War es hilfreich?

Lösung

ich die Antwort für meinen Fall des Hyperlinks nicht immer wieder aktiviert, nicht sicher gefunden, wenn es gilt für Sie folgende Aufgaben:

Ich fand, dass, wenn der übergeordnete Steuerelement des Hyperlink deaktiviert (IsEnabled = false), wird der Hyperlink nicht von Änderungen benachrichtigt, z.B. IsEnabledChanged nicht gefeuert werden, auch wenn die gebundene Eigenschaft ändert Wert.

war meine Lösung meiner XAML nicht mehr zu deaktivieren Vorfahren Kontrolle zu ändern (das die Eltern Hyperlink verursacht wurde deaktiviert zu sein). Mit dem übergeordneten (TextBlock-) immer aktiviert, aktualisiert nun Hyperlink richtig immer.

(Ich bin ein wenig gestört, dass der IsEnabled verhält sich anders als verbindlich Kontrollen zu tun, und ich bin sicher nicht, was ich tun würde, wenn ich nicht die Vorfahren aktiviert lassen könnte ... aber zumindest das läßt mich das verstehen Ausgabe, die ich habe, und läßt mich um ihn herum arbeiten.)

Details: WPF 3.5 SP1

Andere Tipps

schlug ich das gleiche Problem.

Was ich getan habe ist HyperLink der IsEnabled an die Eltern zu binden, und setzte sich in einer App globale Ressource.

<Style TargetType="{x:Type Hyperlink}">
    <Setter Property="IsEnabled" Value="{Binding IsEnabled, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}" />
</Style>

Es ist nicht nur HyperLinks. Es scheint, genauer gesagt TextBlock zu sein, was natürlich ist, was man einen HyperLink in WPF wickeln verwenden. Dies wird das gleiche Problem geben:

<TextBlock>
    <Run Text="Barcode:"/>
    <InlineUIContainer BaselineAlignment="Center">
        <TextBox Text="{Binding OriginalPackage.BarcodeNumber}" />
    </InlineUIContainer>
</TextBlock>

Ich hatte gehofft, IsEnabled="True" Einstellung würde es beheben, aber es scheint nicht zu.

Die einfache Lösung ist es, ein StackPanel mit Orientation="Horizontal" verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top