【发布时间】:2011-10-21 13:09:18
【问题描述】:
EventToCommand 在加载事件时未能传递命令参数
当附加到页面或用户控件的 Load 事件时,EventToCommand 成功调用 ViewModel 中的处理程序,但未传递 CommandParameter。但是,相同的 XAML 附加到另一个事件,例如按钮单击,命令处理程序接收数据绑定数据作为其参数。 Xaml:
<i:EventTrigger EventName="Loaded" SourceObject="{Binding ElementName=Control}">
<Command:EventToCommand x:Name="etcLoad"
Command="{Binding LoadCommand}"
CommandParameter="{Binding Target, ElementName=Control}" />
</i:EventTrigger>
Target 是 View 上的一个字符串 DP。
虚拟机代码:
internal void Load(string p_Param)
{
this.Initialise();
}
public RelayCommand<string> LoadCommand { get; private set; }
命令是这样分配的:
this.LoadCommand = new RelayCommand<string>(this.Load);
我几乎可以肯定,问题在于绑定的完成时间晚于分配给目标 DP 或类似的事情。我有兴趣尽快找到解决方案或以其他方式从视图中获取字符串并进入从 OnNavigateTo 覆盖分配字符串的 ViewModel 中。目标是根据通过 URI 提供的查询属性(即“/Views/DisplayTabDetails?Tab=Tab1”或类似内容)提供选项卡的选择。
【问题讨论】:
标签: load mvvm-light commandparameter eventtocommand