プロジェクトのハンバーガー メニューでテンプレート 10 を使用しています。ユーザーがログインしているかどうかに応じてボタンを動的に変更するには、シェルの ViewModel を作成することにしました。残念ながら、DataContext が ViewModel を正しく対象としていないようです。
データ コンテキストを Shell.xaml に追加しましたが、バインディングが機能しません。これについてもっと良い方法はありますか、それとも私は何か間違っていますか。
Shell.xaml スニペット:
データ コンテキストの設定:
<Page.DataContext>
<viewModels:ShellViewModel x:Name="ViewModel" />
</Page.DataContext>
ビューモデルへの可視性のバインド:
<Controls:HamburgerButtonInfo AutomationProperties.Name="My Journey"
ClearHistory="False"
PageType="views:MyJourneyPage"
Visibility="{Binding LoggedIn, Converter={StaticResource BooleanToVisibilityConverter}}">
ShellViewModel スニペット:
private bool _loggedIn;
public bool LoggedIn { get { return _loggedIn; } set { Set(ref _loggedIn, value); } }
Visual Studio が報告しています: エラー: BindingExpression パス エラー: 'LoggedIn' プロパティが 'Template10.Controls.HamburgerButtonInfo' に見つかりません。BindingExpression: Path='LoggedIn' DataItem='Template10.Controls.HamburgerButtonInfo'; ターゲット要素は 'Template10.Controls.HamburgerButtonInfo' (Name='null') です。ターゲット プロパティは「Visibility」(タイプ「Visibility」)