我创建了一个例子来说明我的问题时避免闪烁。如何使用异步绑定
视图模型:
public class VM : INotifyPropertyChanged
{
private double _value = 1;
public double Value
{
get { return _value; }
set
{
_value = value;
OnPropertyChanged();
}
}
public VM()
{
var timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromTicks(1);
timer.Tick += (s, e) => { Value += 1; };
timer.Start();
}
// OnPropertyChanged stuff ...
}
}
查看:
<Window.DataContext>
<namespace:VM/>
</Window.DataContext>
<Grid>
<TextBox Text="{Binding Value, IsAsync=True, FallbackValue=Test}"/>
</Grid>
当运行我的应用程序中的文本框中的文本闪烁。在更新过程中,会显示FallbackValue,这对我来说毫无意义。
有谁知道目的或者在更新过程中FallbackValue显示有什么好处?有没有办法在异步更新过程中显示旧值?
一个有趣的解决方案..虽然我不认为这是正确的说你在这里重写..它更像是注册你的派生类型(配置概念)与处理程序..你也可以把一个解析器模式。如果你在调用'TextProperty.OverrideMetadata'的时候输入了'typeof(TextBox)',它会不会调用处理程序并提供相同的结果?如果你同时指定了'typeof(CustomTextBox)'和'typeof(TextBox)处理程序会触发两次吗? –
@BrettCaswell,不可能使用'typeof(TextBox)' - 你会得到一个异常。因为已经为textbox textproperty注册了元数据。 – ManDani