2009-06-19 20 views
8

Używam wzorca MVVM i mam pole tekstowe w oknie nadrzędnym i chcę wysłać tekst do wyskakującego okna, które pojawi się w Textchanged.Parametr polecenia WPF w polu tekstowym

Próbowałem używać parametru argumentu, ale nie działa on dla mnie.

Proszę o pomoc ..

Dzięki Sharath

Odpowiedz

1

Co próbowałeś? Ten kod działa dla mnie:

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <Window.CommandBindings> 
     <CommandBinding Command="Cut" Executed="CommandBinding_Executed" /> 
    </Window.CommandBindings> 
    <StackPanel> 
     <TextBox x:Name="textBox1" /> 
     <Button Command="Cut" 
       CommandParameter="{Binding Text,ElementName=textBox1}" 
       Content="Cut" /> 
    </StackPanel> 
</Window> 

Dzięki tej obsługi zdarzeń:

private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e) 
{ 
    MessageBox.Show(e.Parameter.ToString()); 
} 
+0

chcę użyć tekstowe TextChanged lub gdy użytkownik kliknie na polu tekstowym wpisać z klawiatury. Nie chcę przycisku. –

+0

Jeśli używasz polecenia, musisz użyć ICommandSource jak przycisku. Polecenia nie są takie same jak programy obsługi zdarzeń. –

22

jeśli chcę polecenie do wykonania, jeśli użytkownik naciśnie klawisz Enter, lubię używać. Uwaga sprytnego wykorzystania IsDefault Binding :-)

<TextBox x:Name="inputBox"/> 
<Button Command="{Binding CutCommand}" 
     CommandParameter="{Binding Text, ElementName=inputBox}" 
     Content="Cut" 
     IsDefault="{Binding IsFocused, ElementName=inputBox}" /> 

Jeśli nie chcesz, aby było widoczne, można ustawić jego widoczność zawalił oczywiście. Myślę, że nadal wykona polecenie, jeśli klikniesz Enter.

+0

Wielkie dzięki ... Jeśli przycisk jest zwinięty, nie jest wykonywany. Ustawiłem szerokość na 0 :-) –

+0

Czy mogę zrobić to samo dla listbox. Mam na myśli, kiedy dwukrotnie klikam elementy listy. Kliknięcie przycisku powinno zostać podniesione. –

+0

Nie wiem. Polecenie wykonałem ręcznie w tym celu. Jestem całkiem nowy w Xaml, więc kto wie. – Botz3000

2

Ten kod działa dla mnie

<UserControl x:Class="Test" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      Height="Auto" Width="Auto"> 
    <UserControl.InputBindings> 
    <KeyBinding Key="Enter" Command="{Binding ScanCommand}" CommandParameter="{Binding Text, ElementName=tbBarcode}"/> 
    </UserControl.InputBindings> 
    <Grid Name="LayoutRoot"> 
    <TextBox x:Name="tbBarcode" Height="23"/> 
    </Grid> 
</UserControl> 
Powiązane problemy