10

我正在使用 MVVM 模式,并且我在父窗口中有一个文本框,并且想要将一些文本发送到将出现在 Textchanged 上的弹出窗口。

我尝试使用命令参数,但它不适合我。

请帮忙..

谢谢沙拉特

4

4 回答 4

31

如果我希望在用户按下回车时执行命令,我喜欢使用它。注意 IsDefault 绑定的巧妙使用 :-)

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

如果您不希望按钮可见,当然可以将其可见性设置为折叠。我认为如果你按回车它仍然会执行命令。

于 2009-06-19T11:10:48.543 回答
2

这段代码对我有用

<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>
于 2011-05-18T15:36:46.560 回答
1

你试过什么?这段代码对我有用:

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

使用此事件处理程序:

private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
    MessageBox.Show(e.Parameter.ToString());
}
于 2009-06-19T08:43:34.410 回答
0

您可以在不声明任何名称的情况下执行此操作TextBox

<TextBox>
    <TextBox.InputBindings>
        <KeyBinding Command="{Binding SomeCommand}"
                    CommandParameter="{Binding Text, RelativeSource={RelativeSource AncestorType={x:Type TextBox}}}"
                    Key="Return" />
    </TextBox.InputBindings>
</TextBox>
于 2022-03-04T10:27:43.010 回答