来自其他对象的wpf命令参数

时间:2013-03-07 14:06:09

标签: c# wpf data-binding icommand

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

我有一个带有文本框和按钮的表单。该按钮通过ICommandCommand="{Binding MyButtonInViewModel}"对象挂钩。

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

3 个答案:

答案 0 :(得分:19)

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

<TextBlock x:Name="searchBox" />

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

答案 1 :(得分:5)

您可以通过在绑定中设置ElementName来执行此操作。 这是一个例子:

<TextBox x:Name="textBox"/>
<Button Content="Button" 
        Command="{Binding ButtonCommand}" 
        CommandParameter="{Binding ElementName=textBox, Path=Text}"/>

答案 2 :(得分:2)

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

<TextBox x:Name="searchBox" />

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

查看型号代码

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

这个例子可能不太好,您可能希望搜索文本与搜索结果一起显示。更适合日志或消息应用,您希望在单击按钮时“消耗”文本。