2010-08-17 16 views
19

olarak geçirme Şu anda üzerinde bulunduğum pencereyi bir komut olarak nasıl geçirebilirim?Geçerli Pencereyi CommandParameter

ben XAML-biçimlendirme bunu yapmak istiyorum:

<Button Command="CommandGetsCalled" CommandParameter="-this?-" /> 
+0

Neden? XAML'de bildiğim kadarıyla "bu" notasyonu yok. Ayrıca, bu durumda 'bu durumda muhtemelen düğme olacaktır. Ne yapmaya çalışıyorsun? –

+0

-ile-bu içeren Window nesnesini kastediyorum. Başlıkta ve metinde, pencereyi geçmek istediğimi yazıyorum. Rachel ve Daniel Pratt gösterinin cevapları gibi, onun yeterince açık; bu ViewModel nasıl olabileceğiyle) – SwissCoder

cevap

52

Bunu yapmak düşünmek arasında iki yolu vardır: o zaman Window etiketi üzerinde x:Name niteliği yoluyla penceresi bir ad (verin ve böyle bir bağlayıcı oluşturmak (pencerenin adını varsayar 'ThisWindow' dir):

daha bir şey genel (geçerli penceresi ad verme güvenmez) için
<Button Command="CommandGetsCalled" CommandParameter="{Binding ElementName=ThisWindow}" /> 

, bağlama böyle inşa edilebilir :

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

bana gösterebilir misiniz? – CeOnSql

18

parametre olarak Düğmesi geçmek istiyorsanız Bir RelativeSource

için bağlayıcı deneyebilirsiniz:

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

parametre olarak Pencere geçmek isterseniz:

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

Teşekkür ederim Rachel. Senin ve Daniel Pratt'ın çözümlerine baktım. Aslında oldukça benzerler. Ama ben onun cevabı olarak işaretleyeceğim, çünkü Pencereye ismiyle erişme fikrini beğeniyorum. – SwissCoder

+0

'Button'ı parametre örneği olarak kullanmaya çalıştığımda' Belirtilen Visual, başka bir Visual'in veya bir CompositionTarget öğesinin köküdür 'alıyorum. herhangi bir fikir? – Maslow

+0

Ben ') (.dump' bunu göstermek wpf ediyorum LinqPad' 'yoluyla' canExecute' düğmesini çalışıyordu yüzünden olduğunu öğrendim – Maslow

1

Durumumda verilen cevaplardan hiçbiri işe yaramadı.

Bu

benim için çalıştı:

<window x:Name="myWindow"> 
<Button Command="Command" CommandParameter={x:Reference Name=myWindow}/> 
</window> 
İlgili konular