私はWindowsRT/ Windows Storeアプリで作業しており、コードで呼び出しを実行するとき(MVVM-lightフレームワークを使用して、インターフェイスを直接実装する場合RaisePropertyChanged("...")
、これは標準と非常に似ているはずです-実際には両方をテストしました)とても遅いです。OnPropertyChanged
INotifyPropertyChanged
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}" />
遅延に関するアイデアをいただければ幸いです。
ありがとう