2013-03-07 16 views
9

Mi chiedo come contrassegnare lo XAML per quanto segue. Ho un modello di vista con un oggetto basato su ICommand.parametro di comando wpf da altro oggetto

Ho un modulo con una casella di testo e un pulsante. Il pulsante è agganciato all'oggetto ICommand tramite Command="{Binding MyButtonInViewModel}".

Quello che voglio fare è impostare il pulsante CommandParameter uguale a qualsiasi cosa ci sia nel testo della casella di testo tale da richiamare una "Ricerca", ma ovviamente non so come collegare i controlli nella vista.

risposta

17

Il seguente XAML dovrebbe funzionare per passare il testo da TextBox come parametro al comando.

<TextBlock x:Name="searchBox" /> 

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

È possibile eseguire questa operazione impostando il ElementName nella rilegatura. Ecco un esempio:

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

Se si associa la stessa casella di testo per parametro di comando del pulsante, e non solo la proprietà di testo della casella di testo, è possibile manipolare il testo nel modello al fine di, per esempio, chiaro la proprietà del testo.

<TextBox x:Name="searchBox" /> 

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

vista Codice Modello

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

Forse non è grande per questo esempio, dove probabilmente si desidera che il testo di ricerca per rimanere visualizzata insieme ai risultati della ricerca. Migliore per un'app di registrazione o di messaggistica in cui si desidera che il testo venga "consumato" quando si fa clic sul pulsante.

+0

Apprezzo la tua risposta, ma guarda le risposte ... se ce ne sono fornite con il segno di spunta, significa che è stato risolto. Questo è stato quasi un anno fa e io sono ben oltre questo elemento. – DRapp

+4

@DRapp: le risposte su SO non riguardano solo la persona che ha posto la domanda, ma possono anche essere utili per il resto della comunità. Un'altra buona domanda è se sia una buona idea lavorare con l'interfaccia utente di VM. – nightcoder

Problemi correlati