我正在开发一个Windows RT / Windows应用商店应用,并且在我的代码中执行RaisePropertyChanged("...")
调用时(使用MVVM-light框架,如果我的话,这应该与标准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}" />
对延迟的任何想法都将不胜感激。
由于