2013-03-07 15 views
9

Zastanawiam się, jak oznaczyć XAML dla następujących. Mam model widoku z obiektem opartym na ICommand.Parametr polecenia wpf z innego obiektu

Mam formularz z polem tekstowym i przyciskiem. Przycisk jest podłączony do obiektu ICommand przez Command="{Binding MyButtonInViewModel}".

Co chcę zrobić, to ustawić przycisk CommandParameter równy temu, co jest w tekście pola tekstowego, tak aby wywołać "Wyszukiwanie", ale oczywiście nie wiem, jak przechwycić kontrolki w widoku.

Odpowiedz

17

Następujący XAML powinien działać, aby przekazać tekst z TextBox jako parametr do twojego polecenia.

<TextBlock x:Name="searchBox" /> 

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

Można to zrobić, ustawiając ElementName w wiązaniu. Oto przykład:

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

Jeśli powiązać pole tekstowe się do parametru polecenia przycisku, a nie tylko właściwość tekstu w polu tekstowym, można manipulować pole tekstowe w widoku modelu do, na przykład, jasne właściwość tekstu.

<TextBox x:Name="searchBox" /> 

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

Code Widok Model

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

Może nie idealne dla tego przykładu, gdzie prawdopodobnie chcesz tekst wyszukiwania pozostawać wyświetlane wraz z wynikami wyszukiwania. Lepiej dla aplikacji do rejestrowania lub przesyłania wiadomości, w której chcesz, aby tekst został "skonsumowany" po kliknięciu przycisku.

+0

Doceniam twoją odpowiedź, ale spójrz na odpowiedzi ... jeśli są one zaznaczone, oznacza to, że zostały rozwiązane. To było prawie rok temu i jestem daleko poza tym punktem. – DRapp

+4

@DRapp: odpowiedzi na SO są przeznaczone nie tylko dla osoby, która zadała pytanie, ale także mogą być przydatne dla reszty społeczności. Czy jest to dobry pomysł na pracę z interfejsem użytkownika z VM to kolejne pytanie. – nightcoder

Powiązane problemy