Como faço para desativar temporariamente os links da página na barra de navegação do Silverlight 3?

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

Pergunta

Eu tenho um aplicativo de navegação Silverlight 3 e eu gostaria de desativar temporariamente os links para as diversas páginas do Silverlight quando um item está sendo editado, exigindo que o usuário cancele explicitamente a editar em vez de navegar para fora da tela.

[EDIT] Como faço para desativar temporariamente os links de navegação de programação?

Foi útil?

Solução

Você pode vincular a IsEnabled em cada hiperlink para uma propriedade global. Você pode definir a propriedade de código e, assim, desativar a navegação.

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

Outras dicas

Esta é mais uma suposição do que uma resposta, mas:

Bem, não é a maneira simples e não-elegante, e que é para forçar todas as hiper ligações para ser desativado quando o item que está prestes a ser editado ganha foco, e, em seguida, permitir-lhes quando o item perde o foco ou a usuário cancela-lo. Para fazer isso, você poderia agarrar o recipiente com as ligações dentro e loop através deles e desactivar ou activar-los.

Se a navegação existe em outro controle totalmente, em seguida, que o controle pode ser definido como desativado seguindo o mesmo método de foco e foco perdido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top