web-dev-qa-db-ja.com

現在のウィンドウをCommandParameterとして渡す

現在表示しているウィンドウをパラメーターとしてコマンドに渡すにはどうすればよいですか?

私はこれをXAMLマークアップで行うのが好きです:

<Button Command="CommandGetsCalled" CommandParameter="-this?-" />
24
SwissCoder

これを行うには、2つの方法が考えられます。ウィンドウに名前を付け(Windowタグのx:Name属性を使用して)、次のようなバインディングを作成します(ウィンドウの名前を想定) 'ThisWindow'):

<Button Command="CommandGetsCalled" CommandParameter="{Binding ElementName=ThisWindow}" />

より一般的なもの(現在のウィンドウに名前を付けることに依存しない)の場合、バインディングは次のように構成できます。

<Button Command="CommandGetsCalled" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" /> 
66
Daniel Pratt

あなたはRelativeSourceへのバインドを試みることができます

ボタンをパラメーターとして渡したい場合:

<Button Command="CommandGetsCalled" 
        CommandParameter="{Binding RelativeSource={RelativeSource Self}}" />

ウィンドウをパラメータとして渡したい場合:

<Button Command="CommandGetsCalled" 
        CommandParameter="{Binding RelativeSource={
             RelativeSource AncestorType={x:Type Window}}}" />
21
Rachel

私の状況では、提供された回答はどれも機能しませんでした。

これは私のために働いた:

<window x:Name="myWindow">
 <Button Command="Command" CommandParameter={x:Reference Name=myWindow}/>
</window>
3
The One