2010-01-19 18 views
5

ben Yığın taşması bu Aradığınız edilmiş arkasında kodundaki bir iCommand veya CommandReference tetikleyebilir, ama nasıl ... ben bu yinelenen isnt umut henüz buna bir cevap bulamadımMVVM Desen - Ben

MVVM desenini kullanan bir uygulamam var, işleri temiz tutmayı seviyorum, ancak bazen küçük bir kod, XAML çözümünden daha temiz görünüyor.

Codebehind'den bir komutun tetiklenmesinin mümkün olup olmadığını bilmek istiyorum.

Zaten bana göre bir komut başvuru kurdunuz

Yapmak istediğim ne

<local:CommandReference 
       x:Key="CommandReferencePreviewReportsCommand" 
       Command="{Binding PreviewReportsCommand}" /> 

bakış arkasında C# kodundan komut referansı veya iCommand tetikleyemeyebilir olan (aşağıya bakınız) . Bunu yapmayı bilen var mı?

cevap

5

sadece kod arkadan komutunu çağırabilirsiniz:

var parameter = null; // can also be any object you'd like to use as a parameter 
this.PreviewReportsCommand.Execute(parameter); 
+0

Teşekkür Mark, ancak bu işe görünmüyor. Komutu, bu komutun "arkasını" göremeyen, görünüşün kod arkasından çağırmak istiyorum. ViewModel'ın altına koyarsam bu kodun düzgün çalışacağını varsayabilirim ... ama bunun yerine görünümün arkasına erişecek bir şeye ihtiyacım var. –

+0

Teşekkürler Mark ... Çalıştırmak için yapmam gereken küçük bir ayar vardı ... ama beni doğru yola koydu. –

+0

Çalıştığını görüyorum - iyi :) Bunu yapmak için gerekli olan kod arkasındaki dosyadan tamamen açık değildi. –

3

... Tamam Mark SEEMANN - Sen beni doğru yolda ... ben senin oyunu artırdı ...

Veri bağlamının, yazımın ViewModel'de görünür olmasını sağlayacak ... tip döküm yapılabildiğini farketmedim ... bu yüzden aşağıdaki kod benim durumum için çalışıyor ... ve genel bir çözüm benzer olurdu.

((ViewModel.PrintSelectViewModel) this.DataContext).PreviewReportsCommand.Execute(null);