Silverlight 3ナビゲーションバーでページリンクを一時的に無効にするにはどうすればよいですか?
-
05-07-2019 - |
質問
Silverlight 3ナビゲーションアプリケーションがあり、アイテムの編集中にさまざまなSilverlightページへのリンクを一時的に無効にします。ユーザーが画面から移動するのではなく、明示的に編集をキャンセルする必要があります。
[編集]プログラムでナビゲーションリンクを一時的に無効にするにはどうすればよいですか
解決
各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;
}
他のヒント
これは答えよりも推測にすぎませんが、
まあ、シンプルでエレガントではない方法があります。それは、編集しようとしているアイテムがフォーカスを取得したときにすべてのハイパーリンクを強制的に無効にし、アイテムがフォーカスを失うか、ユーザーがキャンセルします。これを行うには、内部にリンクがあるコンテナーを取得し、それらをループして無効または有効にすることができます。
ナビゲーションが別のコントロールに完全に存在する場合、同じコントロールの方法とフォーカスの喪失に従って、そのコントロールを無効に設定できます。
所属していません StackOverflow