Como faço para desativar temporariamente os links da página na barra de navegação do Silverlight 3?
-
05-07-2019 - |
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?
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.