0

私はWindowsRT/ Windows Storeアプリで作業しており、コードで呼び出しを実行するとき(MVVM-lightフレームワークを使用して、インターフェイスを直接実装する場合RaisePropertyChanged("...")、これは標準と非常に似ているはずです-実際には両方をテストしました)とても遅いです。OnPropertyChangedINotifyPropertyChanged

UIの更新が発生するまでの遅延は異なります。プロパティ変更イベントを発生させてボタンと3つのテキストボックスを無効にしますが、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