如何將我當前所在的窗口作爲參數傳遞給命令?將當前窗口作爲CommandParameter傳遞
我喜歡做這XAML的標記:
<Button Command="CommandGetsCalled" CommandParameter="-this?-" />
如何將我當前所在的窗口作爲參數傳遞給命令?將當前窗口作爲CommandParameter傳遞
我喜歡做這XAML的標記:
<Button Command="CommandGetsCalled" CommandParameter="-this?-" />
有我的認爲做這兩種方法:給窗口的名稱(通過x:Name
屬性上Window
標籤,然後構建一個結合這樣的(假設窗口的名稱是「ThisWindow」):
<Button Command="CommandGetsCalled" CommandParameter="{Binding ElementName=ThisWindow}" />
對於一些更普遍的(不依賴於給當前窗口的名稱),綁定可以構建這樣:
<Button Command="CommandGetsCalled" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" />
你能告訴我這是如何看起來像在viewmodel? – CeOnSql 2016-06-24 09:28:13
如果你想通過按鈕作爲參數,你可以嘗試綁定到的RelativeSource
:
<Button Command="CommandGetsCalled"
CommandParameter="{Binding RelativeSource={RelativeSource Self}}" />
如果你想通過窗口作爲一個參數:
<Button Command="CommandGetsCalled"
CommandParameter="{Binding RelativeSource={
RelativeSource AncestorType={x:Type Window}}}" />
謝謝瑞秋。我看着你和Daniel Pratt的解決方案。其實他們很相似。但我會將他標記爲答案,因爲我喜歡通過其名稱訪問窗口的想法。 – SwissCoder 2010-08-17 20:52:26
當我嘗試使用'Button'作爲參數示例時,我得到'Specified Visual已經是另一個Visual的子節點或CompositionTarget的根節點。有任何想法嗎? – Maslow 2017-01-17 21:09:23
發現這是因爲我試圖''通過'LinqPad'將'canExecute'中的按鈕'轉儲('),它將wpf顯示它 – Maslow 2017-01-17 21:15:31
在我的情況下,沒有提供的答案工作。
這爲我工作:
<window x:Name="myWindow">
<Button Command="Command" CommandParameter={x:Reference Name=myWindow}/>
</window>
爲什麼?就我所知,XAML中沒有「這個」符號。另外,在這種情況下'this'可能是按鈕。你想做什麼? – 2010-08-17 15:59:40
與-this-我的意思是包含Window對象。我把它寫在標題和文本中,我想通過窗口。作爲瑞秋和丹尼爾普拉特的答案顯示,其足夠清晰;) – SwissCoder 2010-08-17 20:45:01