2009-06-19 36 views
8

Tôi đang sử dụng mẫu MVVM và tôi có một hộp văn bản trong cửa sổ chính và muốn gửi một số văn bản đến cửa sổ bật lên sẽ xuất hiện trên Textchanged.WPF CommandParameter trong Textbox

Tôi đã thử sử dụng tham số lệnh nhưng nó không hoạt động đối với tôi.

Xin giúp ..

Cảm ơn Sharath

Trả lời

1

Bạn đã thử gì? Mã này làm việc cho tôi:

<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> 

Với xử lý sự kiện này:

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

Tôi muốn sử dụng hộp TextChanged hoặc khi người dùng nhấp nhập vào textbox từ bàn phím. Không muốn nút. –

+0

Nếu bạn đang sử dụng một Lệnh thì bạn phải sử dụng một ICommandSource như một Nút. Các lệnh không giống như các trình xử lý sự kiện. –

22

Nếu tôi muốn các lệnh được thực hiện nếu người dùng nhấn enter, tôi muốn sử dụng này. Lưu ý việc sử dụng thông minh của các ràng buộc IsDefault :-)

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

Nếu bạn không muốn nút hiển thị, bạn có thể đặt khả năng hiển thị của nó để thu gọn tất nhiên. Tôi nghĩ rằng nó vẫn sẽ thực thi lệnh nếu bạn nhấn Enter.

+0

Cảm ơn rất nhiều .. Nếu nút bị sập thì nó không thực thi. Tôi đặt chiều rộng thành 0 :-) –

+0

Tôi có thể làm tương tự cho hộp danh sách hay không. Ý tôi là khi tôi nhấp đúp chuột vào các mục trong hộp danh sách. Các nút bấm thậm chí phải được nâng lên. –

+0

Tôi không biết. Tôi gọi lệnh bằng tay trong code-behind cho điều đó. Tôi khá mới để xaml mặc dù, vì vậy những người hiểu biết. – Botz3000

2

Mã này làm việc cho tôi

<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> 
Các vấn đề liên quan