MVVM 中继命令在 Silverlight NumericUpDown 更改值之前触发
如果您有绑定到 MVVM 属性和 RelayCommand 触发器集(任何事件)的 Silverlight 工具包 NumericUpDown 控件,则在 NumericUpDown 更改 MVVM 属性值之前调用该命令。这意味着,您不能在方法/操作/命令中使用新的(更改的)值...
XAML:
<inputToolkit:NumericUpDown x:Name="testNum" Value="{Binding RegisterForm, Mode=TwoWay}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ValueChanged">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding DoSomethingCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</inputToolkit:NumericUpDown>
MVVM (C#):
DoSomethingCommand = new RelayCommand(() =>
{
OtherRegisterForm = RegisterForm;
});
在这种情况下,如果您的 v 值为 0 并且在 NumericUpDown 控件中输入新值 123它会在 MVVM 属性上的“RaisePropertyChange”事件之前触发“DoSomethingCommand”。 “OtherRegisterForm”将是 0 而不是 123。
有没有办法让它工作?
If you have a Silverlight Toolkit NumericUpDown control binded to a MVVM property and a RelayCommand trigger set (any event), the command is called before NumericUpDown changes MVVM property value. This means, you can not use the new (changed) value with you method/action/command...
XAML:
<inputToolkit:NumericUpDown x:Name="testNum" Value="{Binding RegisterForm, Mode=TwoWay}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ValueChanged">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding DoSomethingCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</inputToolkit:NumericUpDown>
MVVM (C#):
DoSomethingCommand = new RelayCommand(() =>
{
OtherRegisterForm = RegisterForm;
});
In this case, if you have v value 0 and you input a new value 123 in NumericUpDown control it triggers the "DoSomethingCommand" before "RaisePropertyChange" event on MVVM property.
"OtherRegisterForm" would be 0 and not 123.
Is there a way to make this work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
哦,天哪,这并不容易,但你在这里:
xaml 部分:
和 cs 代码:
希望有帮助,Arek
oh boy, wasn't easy but here u are :
xaml part :
and cs code :
hope that helps, Arek