¿Cómo deshabilito temporalmente los enlaces de la página en la barra de navegación de Silverlight 3?

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

Pregunta

Tengo una aplicación de navegación de Silverlight 3 y me gustaría desactivar temporalmente los enlaces a las distintas páginas de Silverlight cuando se está editando un elemento, lo que requiere que el usuario cancele explícitamente la edición en lugar de alejarse de la pantalla.

[EDITAR] ¿Cómo deshabilito temporalmente los enlaces de navegación mediante programación?

¿Fue útil?

Solución

Puede vincular el IsEnabled en cada hipervínculo a una propiedad global. Puede establecer la propiedad desde el código y, por lo tanto, desactivar la navegación.

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

Otros consejos

Esto es más una suposición que una respuesta, pero:

Bueno, existe una forma simple y no elegante, que consiste en forzar la desactivación de todos los hipervínculos cuando el elemento que está a punto de editarse se enfoque, y luego habilitarlos cuando el elemento pierda el foco o usuario lo cancela. Para hacer esto, puedes agarrar el contenedor con los enlaces dentro y recorrerlos y deshabilitarlos o habilitarlos.

Si la navegación existe en otro control completamente, entonces ese control podría configurarse como deshabilitado siguiendo el mismo método de enfoque y enfoque perdido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top