¿Cómo deshabilito temporalmente los enlaces de la página en la barra de navegación de Silverlight 3?
-
05-07-2019 - |
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?
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.