gpt4 book ai didi

silverlight - 在 Silverlight NumericUpDown 更改值之前触发 MVVM 中继命令

转载 作者:行者123 更新时间:2023-12-03 10:18:45 25 4
gpt4 key购买 nike

如果您将 Silverlight Toolkit NumericUpDown 控件绑定(bind)到 MVVM 属性和 RelayCommand 触发器集(任何事件),则在 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。

有没有办法使这项工作?

最佳答案

哦,男孩,这并不容易,但你在这里:

xml部分:

<toolkit:NumericUpDown Value="{Binding SomeNumber}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ValueChanged">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding MyCommand}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</toolkit:NumericUpDown>

和cs代码:
    public class MainViewModel : ViewModelBase
{

public double SomeNumber { get; set; }

public MainViewModel()
{
SomeNumber = 10;
MyCommand = new RelayCommand<RoutedPropertyChangedEventArgs<double>>(myActionMethod);
}

public RelayCommand<RoutedPropertyChangedEventArgs<double>> MyCommand { get; set; }

public void myActionMethod(RoutedPropertyChangedEventArgs<double> arg)
{
MessageBox.Show(arg.NewValue.ToString());
}
}

希望有帮助,阿雷克

关于silverlight - 在 Silverlight NumericUpDown 更改值之前触发 MVVM 中继命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4274786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com