2009-10-22 5 views
2

Silverlight 3 탐색 응용 프로그램이 있는데 항목을 편집 할 때 사용자가 화면에서 벗어나기보다는 명시 적으로 편집을 취소하도록 요구할 때 다양한 Silverlight 페이지에 대한 링크를 일시적으로 해제하고 싶습니다.Silverlight 3 탐색 모음에서 페이지 링크를 일시적으로 비활성화하려면 어떻게합니까?

[편집] 프로그래밍 방식으로 탐색 링크를 일시적으로 사용 중지하려면 어떻게해야합니까?

답변

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

와, 그것을 맞춤법에 감사 ... 많이 인정. 나는 아직도 실버 라이트에 대해 배울 것이 많다. – Feckmore

+0

여러분을 환영합니다! 실버 라이트는 놀랍습니다. 당신은 그걸로 멋진 것들을 할 수 있습니다. Silverlight에 대해 매일 새로운 조정 방법을 배웁니다. – thomasmartinsen

1

이는 대답보다는 추측하지만 더 있습니다 :

음, 간단하고 비 우아한 방법이 있으며, 약 항목이 될 때 사용할 수 없게하는 모든 하이퍼 링크를 강제하는 것입니다 편집 한 항목은 포커스를 얻은 다음 항목의 초점이 맞지 않거나 사용자가 항목을 취소 할 때 사용하도록 설정됩니다. 이렇게하려면 내부의 링크가있는 컨테이너를 잡고 루프를 통해 루프를 비활성화하거나 활성화 할 수 있습니다.

네비게이션이 다른 컨트롤에 완전히있는 경우 해당 컨트롤은 같은 포커스 및 포커스 손실 방법에 따라 사용 안 함으로 설정할 수 있습니다.

관련 문제