Как мне временно отключить ссылки на страницы в панели навигации Silverlight 3?
-
05-07-2019 - |
Вопрос
У меня есть навигационное приложение 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;
}
Другие советы
Это скорее предположение, чем ответ, но:
Ну, есть простой и не элегантный способ, который состоит в том, чтобы принудительно отключить все гиперссылки, когда элемент, который должен редактироваться, получает фокус, а затем включить их, когда элемент теряет фокус или Пользователь отменяет это. Для этого вы можете захватить контейнер со ссылками внутри, а затем просмотреть их, отключив или включив их.
Если навигация полностью существует в другом элементе управления, тогда этот элемент управления можно отключить, следуя тому же методу фокусировки и потеряв фокус.