3

プロジェクトのハンバーガー メニューでテンプレート 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」)

4

2 に答える 2

1

ビューモデルのパスと、ログイン用に作成したプロパティ、Path = LoggedIn、DataContext = ViewModel は、DataContext の組み合わせを見つける必要がある深さに応じて表示されません。これは、DataItem が現在認識している DataContext が原因である可能性が高く、ハンバーガー コントロールの一部であるコレクションに関連しています。

于 2016-06-18T04:33:05.653 に答える