WPF CommandParameter в текстовом поле - PullRequest
10 голосов
/ 19 июня 2009

Я использую шаблон MVVM, и у меня есть текстовое поле в родительском окне, и я хочу отправить некоторый текст во всплывающее окно, которое появится в Textaged.

Я пытался использовать параметр команды, но он не работает для меня.

Пожалуйста, помогите ..

Спасибо Шарат

Ответы [ 3 ]

27 голосов
/ 19 июня 2009

Если я хочу, чтобы команда выполнялась, если пользователь нажимает ввод, я хотел бы использовать это. Обратите внимание на умное использование привязки IsDefault: -)

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

Если вы не хотите, чтобы кнопка была видимой, вы можете, конечно, установить ее видимость свернутой. Я думаю, что она все равно выполнит команду, если вы нажмете Enter.

2 голосов
/ 18 мая 2011

Этот код работает для меня

<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>
1 голос
/ 19 июня 2009

Что вы пробовали? Этот код работает для меня:

<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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...