0

MSリボンメニューを使用してWPFアプリケーションを作成します。メインリボンウィンドウで、さまざまなページを表示するフレームを定義しました。これまでのところ、すべてが正常に機能しています。埋め込まれたページで値を取得または設定しようとすると、次のコマンドを使用します。

たとえば、メインウィンドウでリボンボタンをクリックしたときにリストビューでカーソルを移動します。

((Page_Rules)MainFrame.Content).lvwTemplates.Items.MoveCurrentToLast(); 

ここで、ページクラスからメインウィンドウの何かにアクセスするために、その逆を試みます。

((MainWindow)Content).RibbonWindow.Group_References.IsEnabled = false;

ただし、これは機能していません。次の例外が発生します

タイプ「System.Windows.Controls.Grid」のオブジェクトをタイプ「MyApplication.MainWindow」にキャストできません

埋め込まれたページからメインウィンドウのコントロールにアクセスするにはどうすればよいのでしょうか。

4

1 に答える 1

0

VisualTreeHelper.GetParent を使用して、MainWindow タイプの Page の Visual Parent を取得できます。
ただし、適切なバインディングがあれば、コントロールに直接アクセスする必要はないことに注意してください。カーソルの例では、ListViewIndex 整数プロパティを使用できます。このプロパティはもちろん変更時に PropertyChanged を発生させる必要があり、RibbonButton をクリックすると、ListViewIndex を更新するだけで済みます。(この場合、リスト内の項目数を示す読み取り専用プロパティも必要になる場合があります)。listView を含むページで、SelectedIndex を ListViewIndex にバインドすると、コードでコントロールにアクセスする必要がなくなります。

于 2012-08-04T11:57:31.293 に答える