【问题标题】:Passing a third party object as Command Parameter将第三方对象作为命令参数传递
【发布时间】:2018-03-29 13:21:17
【问题描述】:

我在我的 XAML 中使用了第 3 方树元素,我想从中将元素添加到我自己的树控件中。这是通过绑定到命令“TransferClick”的按钮完成的。
现在要从 3rd 方树控件中获取元素,我需要理想地将其作为命令参数传递,这就是我卡住的地方。

我的 XAML 如下所示:

<Window>
    <Window.DataContext>
        <this:MeasurementConfig />
    </Window.DataContext>
    <Grid>
        <SystemStorageUI:StorageChannelAndAliasBrowser x:Name="sdfBrowser"/>
        <TreeView x:Name="fileTree"/>
        <Button x:Name="trnsfrButton"
                Command="{Binding TransferClick}"
                CommandParameter="{Binding}"/>
    </Grid>
</Window>

现在,当我使用CommandParameter="{Binding}" 时,我在RelayCommand : ICommand 类的“执行”方法中得到一个MeasurementConfig 类型的对象。这是有道理的,因为它是我的 DataContext。
当我使用CommandParameter="{Binding sdfBrowser}" 时,我得到空值。

如何传递“sdfBrowser”对象?

【问题讨论】:

  • 你试过{Binding ElementName=sdfBrowser}吗?
  • 我可以以某种方式将您的评论标记为答案吗?这是现场!不过,我离得有多近有点遗憾……
  • 抱歉很久才回答,Holydays....评论不能标记为答案。随意回答您自己的问题并接受它或干脆将其删除。
  • 好的,到时会这样做。

标签: c# wpf mvvm


【解决方案1】:

您可以在窗口标签中设置窗口名称,并通过CommandParameter="{Binding ElementName=YourWindowName}" 将窗口作为参数传递。如果您只想要视图的特定属性,则可以在视图中使用此特定属性实现接口,而不是像上面那样在 CommandParameter 中绑定窗口,但在 viewModel 中获取接口作为参数。

【讨论】:

    【解决方案2】:

    似乎缺少 ElementName 关键字:
    CommandParameter="{Binding ElementName=sdfBrowser}" 有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      相关资源
      最近更新 更多