0

我正在开发 Windows RT/Windows Store 应用程序,并且在我的代码中执行调用时(使用 MVVM-light 框架,如果我要直接实现接口RaisePropertyChanged("..."),这应该与标准非常相似- 事实上我都测试了)它很慢。OnPropertyChangedINotifyPropertyChanged

UI 更新发生之前的延迟确实有所不同;我引发了一个属性更改事件来禁用一个按钮和三个文本框,但是要在 UI 上执行此更新通常需要 1.5-2 秒。相当令人沮丧。为什么这不是即时的?我的.xaml看法不是很复杂。

在我的按钮上Command

        SubmitCommand = new RelayCommand<string>(RunSubmitCommand);
        ...
        private async void RunSubmitCommand(string param)
        {
            submitted = true;
            RaisePropertyChanged(() => CanSubmit);
            RaisePropertyChanged(() => CanEnterValues);
        }

属性如下所示:

        public bool CanSubmit
        {
            // formatted for readability on SO
            // IsField1Valid, IsField2Valid, IsField3Valid I should mention 
            // just resolve nullable bool's
            get { return !submitted && 
                         IsField1Valid.GetValueOrDefault() && 
                         IsField2Valid.GetValueOrDefault() && 
                         IsField3Valid.GetValueOrDefault(); }
        }

        public bool CanEnterValues
        {
            get { return !submitted; }
        }

文本字段和提交按钮如下所示.xaml

<TextBox x:Name="TextField1Box" TabIndex="1" Text="{Binding Field1}" 
  IsEnabled="{Binding CanEnterValues}" Style="{StaticResource ValueTextBoxStyle}"
  LostFocus="Field1TextBox_LostFocus" />
... x 2 more

<Button x:Name="SubmitButton" TabIndex="4" Command="{Binding SubmitCommand}"
  Content="Submit Values" IsEnabled="{Binding CanSubmit}" 
  Style="{StaticResource ButtonStyle}" />

任何关于延迟的想法将不胜感激。

谢谢

4

0 回答 0