我正在开发 Windows RT/Windows Store 应用程序,并且在我的代码中执行调用时(使用 MVVM-light 框架,如果我要直接实现接口RaisePropertyChanged("...")
,这应该与标准非常相似- 事实上我都测试了)它很慢。OnPropertyChanged
INotifyPropertyChanged
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}" />
任何关于延迟的想法将不胜感激。
谢谢