【问题标题】:Xaml pass bound property to commandXaml 将绑定属性传递给命令
【发布时间】:2017-11-08 16:26:06
【问题描述】:

我有一个TextBox 绑定到ViewModel 上的string 属性,我有一个ButtonCommand。现在,如果可能,我想将属性本身作为CommandParameter 传递。 这可能吗?

Xaml 部分:

<TextBox Text="{Binding FilePath, UpdateSourceTrigger=PropertyChanged}"/>
<Button Command="{Binding BrowseCommand}" CommandParameter="{Binding FilePath}" Content="..." />

Command 看起来像这样,但是我必须放置什么类型而不是 RelayCommand&lt;?&gt;,我需要将 CommandParameter 绑定到什么?

public ICommand BrowseCommand => this.browseCommand ?? (this.browseCommand = new RelayCommand<?>(this.Browse));

【问题讨论】:

  • 文件路径是我假设的字符串类型?
  • 是的,我想传递属性本身,而不是它的值(如果可能的话)
  • 这是不可能的。 {Binding} 解析
  • 出于好奇,您为什么要引用该属性?也许还有另一种方式。描述你的情况。
  • 感谢您的帮助。所以我有多个TextBoxes,每个都绑定到自己的属性。对于每个TextBox,我都有一个Button,它应该设置适当TextBox 的属性。我想对所有Buttons 使用一个命令,我能想到的唯一方法是Command 需要知道它应该设置的属性。我希望它变得清晰:#

标签: c# wpf xaml properties binding


【解决方案1】:

如果您使用来自 MvvmLight 的 RelayCommand&lt;T&gt; 类,这应该可以工作:

public ICommand BrowseCommand => this.browseCommand ?? (this.browseCommand = new RelayCommand<string>(this.Browse));

private void Browse(string obj)
{

}

【讨论】:

  • 感谢您的回答,我也试过了,它可以工作,但obj 持有财产的价值,而不是财产本身。我正在寻找一种方法,以便在 Browse 内部我可以使用 obj 作为它的属性(例如,设置 obj 会显示在 UI 上
  • 不支持。您将获得作为命令参数传递的属性的
  • 那么有没有办法通过实际属性?好的,谢谢你的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 2017-04-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多