I collegamenti ipertestuali sono stare inattivo dopo aver impostato isEnabled = true al controllo padre

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

  •  21-09-2019
  •  | 
  •  

Domanda

Ho un TabItem contanining una casella di riepilogo, che ha una collezione obeservable della mia classe feed come fonte voce. Quando rinfresco / caricare i feed nella collezione voglio disabilitare la finestra principale in modo che l'utente non può andare cliccando altre cose mentre questo processo è in esecuzione. Così ho impostato tbCtrl.isEnabled=false; al mio controllo scheda sul modulo. Quindi assegnare un gestore di eventi per l'evento finitura personalizzata che viene attivato dopo che tutti i feed sono stati caricati.

Il tutto funziona bene, tuttavia i collegamenti ipertestuali per i risultati che sono attualmente visualizzati sul controllo a schede mai ottenere ri-enabled (Nor fare la prossima alcuni che sono fuori dalla vista a causa della lista formato della scatola). Tutti gli altri risultati, più in basso vanno bene, come lo sono i risultati sul altra scheda.

Ho provato a chiamare InvalidateVisual sul controllo scheda dopo che tutto è finito, per vedere se questo fa la differenza, ma che non sembra causare alcun cambiamento.

riuscivo a capire se fosse tutti i collegamenti ipertestuali facendo, o solo quelle attualmente visualizzata, ma non capisco il motivo per cui quelli che sono fuori di scorrimento non funzionano neanche.

Immagine di emissione

È stato utile?

Soluzione

ho trovato la risposta per il mio caso del collegamento ipertestuale non ottenere riattivato, non è sicuro se si applica a vostra:

ho scoperto che quando il controllo padre del collegamento ipertestuale è disabilitata (IsEnabled = false), il collegamento ipertestuale non sarà possibile ottenere una notifica di cambiamenti, per esempio IsEnabledChanged non viene licenziato, anche quando il legato valore cambia proprietà.

La mia soluzione era quella di cambiare il mio Xaml di disattivare non è più il controllo antenato (che stava causando padre del collegamento ipertestuale per essere disabilitato). Con il genitore (TextBlock) sempre attivata, ora gli aggiornamenti Collegamento ipertestuale correttamente sempre.

(Sono un po 'preoccupato che l'IsEnabled vincolante comporta in modo diverso rispetto ai controlli fanno, e non sono sicuro di cosa avrei fatto se non ho potuto lasciare l'antenato permesso ... ma almeno questo mi permette di capire il problema che stava avendo, e mi permette di lavorare intorno ad esso.)

Dettagli: WPF 3.5 SP1

Altri suggerimenti

Mi ha colpito lo stesso problema.

Quello che ho fatto è quello di legare IsEnabled di collegamento ipertestuale per il genitore, e che mettere in una risorsa globale App.

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

Non è solo HyperLinks. Sembra essere più specificamente TextBlock che ovviamente è quello che si usa per avvolgere un HyperLink in WPF. Questo darà lo stesso problema:

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

Speravo impostazione IsEnabled="True" avrebbe risolto il problema, ma non sembra.

La soluzione più semplice è quella di utilizzare un StackPanel con Orientation="Horizontal"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top