Почему неправильно привязывается параметр моей команды? - PullRequest
0 голосов
/ 06 октября 2009

Я пытаюсь связать команду кнопки, чтобы взять текст текстового поля в качестве параметра при нажатии кнопки. Мой Xaml выглядит так:

<TextBox x:Name="InputBox" Width="250" TabIndex="1" 
   Text="{Binding Path=MessageText, Mode=TwoWay}" 
   FontFamily="Verdana" FontSize="11" Margin="0,0,4,0" />
<Button x:Name="SendButton" Width="50" Content="Send" TabIndex="2"
   commands:Click.CommandParameter="{Binding Path=MessageText}"
   commands:Click.Command="{Binding SendMessageCommand}" />

Где MessageText определяется следующим образом:

private string mMessageText;
public string MessageText
{
     get { return mMessageText; }
     set { mMessageText = value; OnPropertyChanged(MessageText); }
}

И мой DelegateCommand выглядит так:

public ICommand SendMessageCommand { get; private set; }

public TestModuleViewModel()
{
     Messages = new ObservableCollection<Message>();
     this.SendMessageCommand = new DelegateCommand<string>(text =>
     {
          Messages.Add(CreateMessage(text, "Me"));
     });
}

Я запустил это с точкой останова, установленной на делегате, и параметр 'text' каждый раз равен нулю. Если я заменю оператор связывания commands:Click.CommandParameter="{Binding Path=MessageText}" на какое-то жестко закодированное значение (как в commands:Click.CommandParameter="Foo"), я получу значение, как и ожидалось. Чего мне не хватает на переплетной стороне?

1 Ответ

3 голосов
/ 06 октября 2009

Если с реализацией OnPropertyChanged у вас не получится ДЕЙСТВИТЕЛЬНО чего-то необычного, скорее всего это так:

OnPropertyChanged(MessageText);

Должно быть так:

OnPropertyChanged("MessageText");

Надеюсь, это поможет.

...