Come disabilitare temporaneamente i collegamenti alle pagine nella barra di navigazione di Silverlight 3?

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

Domanda

Ho un'applicazione di navigazione Silverlight 3 e vorrei disabilitare temporaneamente i collegamenti alle varie pagine di Silverlight durante la modifica di un elemento, richiedendo all'utente di annullare esplicitamente la modifica anziché allontanarsi dallo schermo.

[EDIT] Come disabilitare temporaneamente i collegamenti di navigazione a livello di codice?

È stato utile?

Soluzione

È possibile associare IsEnabled su ciascun HyperLink a una proprietà globale. È possibile impostare la proprietà dal codice e quindi disabilitare la navigazione.

MainPage.cs

public partial class MainPage : UserControl
{
    public bool IsNavigationEnabled
    {
        get { return (bool)GetValue(IsNavigationEnabledProperty); }
        set { SetValue(IsNavigationEnabledProperty, value); }
    }
    public static readonly DependencyProperty IsNavigationEnabledProperty =
        DependencyProperty.Register("IsNavigationEnabled", typeof(bool), typeof(MainPage), null);

    public MainPage()
    {
        InitializeComponent();

        DataContext = this;
    }

...

MainPage.xaml

<HyperlinkButton
    x:Name="Link1"
    IsEnabled="{Binding IsNavigationEnabled}"
    Style="{StaticResource LinkStyle}"
    NavigateUri="/Home"
    TargetName="ContentFrame"
    Content="home" />

Home.xaml.cs

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MainPage page = (MainPage)Application.Current.RootVisual;
        page.IsNavigationEnabled = !page.IsNavigationEnabled;
    }

Altri suggerimenti

Questa è più un'ipotesi che una risposta ma:

Bene, esiste un modo semplice e non elegante, ovvero forzare la disattivazione di tutti i collegamenti ipertestuali quando l'elemento che sta per essere modificato ottiene lo stato attivo, quindi abilitarli quando l'elemento perde lo stato attivo o il l'utente lo annulla. Per fare ciò, è possibile afferrare il contenitore con i collegamenti all'interno e scorrere attraverso di essi e disabilitarli o abilitarli.

Se la navigazione esiste interamente in un altro controllo, quel controllo potrebbe essere impostato come disabilitato seguendo lo stesso metodo di messa a fuoco e messa a fuoco persa.

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