我想知道如何为以下内容标记 XAML。我有一个基于对象的视图模型ICommand
。
我有一个带有文本框和按钮的表单。按钮通过 连接到ICommand
对象Command="{Binding MyButtonInViewModel}"
。
我想要做的是将按钮设置为CommandParameter
等于文本框文本中的任何内容,例如调用“搜索”,但显然不知道如何挂钩视图中的控件。
我想知道如何为以下内容标记 XAML。我有一个基于对象的视图模型ICommand
。
我有一个带有文本框和按钮的表单。按钮通过 连接到ICommand
对象Command="{Binding MyButtonInViewModel}"
。
我想要做的是将按钮设置为CommandParameter
等于文本框文本中的任何内容,例如调用“搜索”,但显然不知道如何挂钩视图中的控件。
以下 XAML 应该可以将 TextBox 中的文本作为参数传递给您的命令。
<TextBlock x:Name="searchBox" />
<Button Command="{Binding MyButtonInViewModel}"
CommandParameter="{Binding Text, ElementName=searchBox}"/>
您可以通过ElementName
在绑定中设置来做到这一点。这是一个例子:
<TextBox x:Name="textBox"/>
<Button Content="Button"
Command="{Binding ButtonCommand}"
CommandParameter="{Binding ElementName=textBox, Path=Text}"/>
如果您将文本框本身绑定到按钮的命令参数,而不仅仅是文本框的文本属性,您可以在视图模型中操作文本框,例如,清除文本属性。
<TextBox x:Name="searchBox" />
<Button Command="{Binding MyButtonInViewModel}"
CommandParameter="{Binding ElementName=searchBox}" />
查看型号代码
private void SearchStuff(TextBox searchBox)
{
//do stuff with searchBox.Text
searchBox.Text = "";
}
对于这个示例可能不是很好,您可能希望搜索文本与搜索结果一起显示。更适合您希望在单击按钮时“使用”文本的日志记录或消息传递应用程序。