2013-03-07 15 views
9

Aşağıdakiler için XAML'yi nasıl işaretleyeceğinizi merak ediyorum. ICommand tabanlı bir nesne ile bir görünüm modelim var.wpf komut parametresi diğer nesneden

Metin kutusu ve düğme içeren bir formum var. Düğme Command="{Binding MyButtonInViewModel}" aracılığıyla ICommand nesnesine bağlanır.

Yapmak istediğim, bir "Arama" çağırmak gibi metin kutusunun içinde ne varsa, düğmenin CommandParameter değerini eşit olarak ayarlamaktır, ancak açıkçası görünümde denetimlere nasıl bağlanacağını bilmiyorum.

cevap

17

Aşağıdaki XAML, Metni TextBox'tan komutunuza Parametre olarak iletmek için çalışmalıdır.

<TextBlock x:Name="searchBox" /> 

<Button Command="{Binding MyButtonInViewModel}" 
     CommandParameter="{Binding Text, ElementName=searchBox}"/> 
5

Bunu, bağlamada ElementName ayarlayarak yapabilirsiniz. düğmenin komut parametresine metin kutusu kendisi ve metin kutusunun sadece metin özelliğini bağlarsanız

<TextBox x:Name="textBox"/> 
<Button Content="Button" 
     Command="{Binding ButtonCommand}" 
     CommandParameter="{Binding ElementName=textBox, Path=Text}"/> 
1

vermeniz gibi durumlarda, açık, sizin bakış modelinde metin kutusu işleyebilirsiniz: İşte bir örnek metin özelliği.

<TextBox x:Name="searchBox" /> 

<Button Command="{Binding MyButtonInViewModel}" 
     CommandParameter="{Binding ElementName=searchBox}" /> 

Görünüm Model Kodu

private void SearchStuff(TextBox searchBox) 
{ 
    //do stuff with searchBox.Text 
    searchBox.Text = ""; 
} 

muhtemelen arama metin arama sonuçlarıyla birlikte görüntülenir halde kalmasını istiyorsanız, bu örnekte, Belki büyük değil. Düğmeye tıklandığında metnin 'tüketilmesini' istediğiniz bir günlüğe kaydetme veya mesajlaşma uygulaması için daha iyi.

+0

Cevabınız için teşekkür ederim, ancak cevaplara bakın ... eğer onay işareti varsa, bu çözülmüş demektir. Bu neredeyse bir yıl önceydi ve bu maddenin ötesindeyim. – DRapp

+4

@DRapp: SO'daki cevaplar sadece soruyu soran kişi için değil, aynı zamanda toplumun geri kalanı için de yararlı olabilir. VM'den UI ile çalışmak iyi bir fikir olup olmadığı başka bir sorudur. – nightcoder