如何将第三方树控件对象作为Command Parameter传入命令?
我明白你现在卡在把第三方树控件作为命令参数传给TransferClick命令这个环节了,别着急,咱们一步步来搞定它。
第一步:给第三方树控件命名
首先得给你的第三方树控件加个x:Name,这样才能在XAML里精准引用它:
<SystemStorageUI:StorageChannelAndAliasBrowser x:Name="ThirdPartyTree" <!-- 其他原有属性保持不变 --> />
第二步:在按钮里绑定命令参数
接下来把按钮的CommandParameter绑定到这个命名好的树控件上,用ElementName就能直接关联:
<Button Content="转移元素" Command="{Binding TransferClick}" CommandParameter="{Binding ElementName=ThirdPartyTree}" />
第三步:在ViewModel里处理参数
你的MeasurementConfig ViewModel里,要确保命令能接收第三方树控件的类型。假设你用的是RelayCommand(常见的MVVM命令实现),可以这么写:
using System.Windows.Input; // 别忘了引入第三方控件的命名空间 using SystemStorageUI; public class MeasurementConfig { public ICommand TransferClick { get; } public MeasurementConfig() { // 泛型参数指定第三方树控件的具体类型 TransferClick = new RelayCommand<StorageChannelAndAliasBrowser>(HandleTransfer); } private void HandleTransfer(StorageChannelAndAliasBrowser thirdPartyTree) { if (thirdPartyTree == null) return; // 这里就可以操作第三方树控件了,比如获取选中项 var targetItems = thirdPartyTree.SelectedItems; // 接下来把这些元素添加到自研树控件的逻辑写在这里 } }
可能遇到的小问题及解决
如果用ElementName绑定找不到控件,试试用RelativeSource向上查找父容器(根据你的实际布局调整):
CommandParameter="{Binding Path=Children[0], RelativeSource={RelativeSource AncestorType=Grid}}"
另外要注意:
- 确认第三方树控件的属性(比如
SelectedItems)是公开可访问的 - 如果第三方树有特殊的选中项获取方式,记得参考它的官方文档调整代码
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

