我有一個Silverlight 3導航應用程序,我希望在編輯項目時暫時禁用到各種Silverlight頁面的鏈接,要求用戶顯式取消編輯而不是離開屏幕。如何暫時禁用Silverlight 3導航欄中的頁面鏈接?
[編輯]如何以編程方式暫時禁用導航鏈接?
我有一個Silverlight 3導航應用程序,我希望在編輯項目時暫時禁用到各種Silverlight頁面的鏈接,要求用戶顯式取消編輯而不是離開屏幕。如何暫時禁用Silverlight 3導航欄中的頁面鏈接?
[編輯]如何以編程方式暫時禁用導航鏈接?
您可以將每個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;
}
這更多的是一種猜測不是一個答案,但:
嗯,有簡單的和不優雅的方式,那就是迫使所有的超鏈接被禁用時,作爲有關項目是編輯獲得焦點,然後在項目失去焦點或用戶取消焦點時啓用它們。爲此,您可以使用內部鏈接抓取容器,然後循環訪問並禁用或啓用它們。
如果導航完全存在於另一個控件中,那麼可以按照相同的聚焦方法和失去焦點將該控件設置爲禁用。
哇,感謝拼寫出來...大加讚賞。我仍然有很多東西需要了解silverlight。 – Feckmore 2009-10-22 20:43:32
不客氣! Silverlight是驚人的,你可以用它做一些偉大的事情。我每天都會學習關於Silverlight的新調整。 – thomasmartinsen 2009-10-22 21:22:16