13

我想知道如何为以下内容标记 XAML。我有一个基于对象的视图模型ICommand

我有一个带有文本框和按钮的表单。按钮通过 连接到ICommand对象Command="{Binding MyButtonInViewModel}"

我想要做的是将按钮设置为CommandParameter等于文本框文本中的任何内容,例如调用“搜索”,但显然不知道如何挂钩视图中的控件。

4

3 回答 3

23

以下 XAML 应该可以将 TextBox 中的文本作为参数传递给您的命令。

<TextBlock x:Name="searchBox" />

<Button Command="{Binding MyButtonInViewModel}" 
        CommandParameter="{Binding Text, ElementName=searchBox}"/>
于 2013-03-07T14:09:34.830 回答
7

您可以通过ElementName在绑定中设置来做到这一点。这是一个例子:

<TextBox x:Name="textBox"/>
<Button Content="Button" 
        Command="{Binding ButtonCommand}" 
        CommandParameter="{Binding ElementName=textBox, Path=Text}"/>
于 2013-03-07T14:14:55.770 回答
4

如果您将文本框本身绑定到按钮的命令参数,而不仅仅是文本框的文本属性,您可以在视图模型中操作文本框,例如,清除文本属性。

<TextBox x:Name="searchBox" />

<Button Command="{Binding MyButtonInViewModel}"
        CommandParameter="{Binding ElementName=searchBox}" />

查看型号代码

private void SearchStuff(TextBox searchBox)
{
    //do stuff with searchBox.Text
    searchBox.Text = "";
}

对于这个示例可能不是很好,您可能希望搜索文本与搜索结果一起显示。更适合您希望在单击按钮时“使用”文本的日志记录或消息传递应用程序。

于 2014-02-27T17:01:25.260 回答