在CommandBinding中未执行绑定

时间:2017-08-08 09:34:00

标签: c# wpf xaml textbox commandbinding

我有这个xaml代码:

UserData

搜索方法如下:

public class CancelScorable : ScorableBase<IActivity, string, double>
{
    private readonly IDialogTask task;

    public CancelScorable(IDialogTask task)
    {
        SetField.NotNull(out this.task, nameof(task), task);
    }

    protected override async Task<string> PrepareAsync(IActivity activity, CancellationToken token)
    {
        // Accessing info, for example here UserData:
        var userData = await activity.GetStateClient().BotState.GetUserDataAsync(activity.ChannelId, activity.From.Id);

        // ... add your treatment

        return null;
    }

    // ...
}

MainCommands:

LOCAL_MAC_ADDRESS

但是如果我在焦点位于文本框中时按Enter键,则绑定不是计算机,而LastName是空的。是什么原因?我怎么能避免这个?或者是否可以显式调用绑定操作?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我可以看到你的Window是一个视图模型。我建议您使用MVVM并为视图模型设置单独的类,您可以在ICommand上放置所需的CommandParameter并使用KeyBinding

<TextBox x:Name="searchBox"
         Text="{Binding LastName}">
    <TextBox.InputBindings>
        <KeyBinding Key="Enter"
                    Command="{Binding Path=SearchCommand}"
                    CommandParameter="{Binding Path=Text, ElementName=searchBox}" />
    </TextBox.InputBindings>
</TextBox>