2009-10-22 26 views

回答

2

您可以將每個HyperLink上的IsEnabled綁定到全局屬性。您可以從代碼中設置屬性,從而禁用導航。

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

哇,感謝拼寫出來...大加讚賞。我仍然有很多東西需要了解silverlight。 – Feckmore 2009-10-22 20:43:32

+0

不客氣! Silverlight是驚人的,你可以用它做一些偉大的事情。我每天都會學習關於Silverlight的新調整。 – thomasmartinsen 2009-10-22 21:22:16

1

這更多的是一種猜測不是一個答案,但:

嗯,有簡單的和不優雅的方式,那就是迫使所有的超鏈接被禁用時,作爲有關項目是編輯獲得焦點,然後在項目失去焦點或用戶取消焦點時啓用它們。爲此,您可以使用內部鏈接抓取容器,然後循環訪問並禁用或啓用它們。

如果導航完全存在於另一個控件中,那麼可以按照相同的聚焦方法和失去焦點將該控件設置爲禁用。