【发布时间】:2011-04-15 00:24:49
【问题描述】:
我在表单上有几个文本框,当焦点丢失时,我想调用一个 setter 存储过程来保存数据,然后在我的回调函数中调用一个 getter 存储过程,它将更新作业成本摘要在我的表格上。我正在使用 Mvvm light,当我尝试在 LostFocus EventTrigger 上绑定 EventToCommand 时,我的命令被触发了两次。
我知道这是由于事件冒泡造成的,但我不确定如何确保我的方法实际上只被触发一次。这是我的 xaml:
<TextBox x:Name="txtMiles" Grid.Row="1" Width="80" Grid.Column="2" Margin="2" Text="{Binding Miles, Mode=TwoWay}" HorizontalAlignment="Center" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<cmd:EventToCommand Command="{Binding UpdateJobCost}" CommandParameter="{Binding Text, ElementName=txtMiles}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
还有我的 ViewModel:
public RelayCommand<string> UpdateJobCost { get; set; }
public WorkOrderControlViewModel(TSMVVM.Services.IWorkOrderService workOrderService)
{
WorkOrderService = workOrderService;
RegisterCommands();
LoadData();
}
private void RegisterCommands()
{
UpdateJobCost = new RelayCommand<string>((value) => updateJC(value));
}
private void updateJC(string value)
{
//Handle Setter service call here
}
非常感谢,
斯科特
【问题讨论】:
标签: silverlight mvvm mvvm-light