Как мне временно отключить ссылки на страницы в панели навигации Silverlight 3?

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

Вопрос

У меня есть навигационное приложение Silverlight 3, и я хотел бы временно отключить ссылки на различные страницы Silverlight при редактировании элемента, требуя от пользователя явной отмены редактирования, а не перехода от экрана.

[РЕДАКТИРОВАТЬ] Как мне временно отключить навигационные ссылки программно?

Это было полезно?

Решение

Вы могли бы привязать IsEnabled для каждой гиперссылки к глобальному свойству.Вы можете установить свойство из кода и тем самым отключить навигацию.

Главная страница.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;
    }

...

Главная страница.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;
    }

Другие советы

Это скорее предположение, чем ответ, но:

Ну, есть простой и не элегантный способ, который состоит в том, чтобы принудительно отключить все гиперссылки, когда элемент, который должен редактироваться, получает фокус, а затем включить их, когда элемент теряет фокус или Пользователь отменяет это. Для этого вы можете захватить контейнер со ссылками внутри, а затем просмотреть их, отключив или включив их.

Если навигация полностью существует в другом элементе управления, тогда этот элемент управления можно отключить, следуя тому же методу фокусировки и потеряв фокус.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top