Comment désactiver temporairement les liens de page dans la barre de navigation de Silverlight 3?

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

Question

Je possède une application de navigation Silverlight 3 et je souhaite désactiver temporairement les liens vers les différentes pages Silverlight lors de la modification d'un élément. L'utilisateur doit annuler explicitement la modification plutôt que de quitter l'écran.

[MODIFIER] Comment désactiver temporairement les liens de navigation par programmation?

Était-ce utile?

La solution

Vous pouvez lier IsEnabled sur chaque hyperlien à une propriété globale. Vous pouvez définir la propriété à partir du code et désactiver ainsi la navigation.

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;
    }

Autres conseils

C’est plus une supposition qu’une réponse mais:

Eh bien, il existe un moyen simple et non élégant, qui consiste à forcer la désactivation de tous les hyperliens lorsque l'élément à modifier est activé, puis à les activer lorsque l'élément perd le focus ou la l'utilisateur l'annule. Pour ce faire, vous pouvez saisir le conteneur contenant les liens à l'intérieur, les parcourir et les désactiver ou les activer.

Si la navigation existe entièrement dans un autre contrôle, vous pouvez définir ce contrôle comme désactivé en suivant la même méthode de mise au point et de perte de mise au point.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top