我創建了一個例子來說明我的問題時避免閃爍。如何使用異步綁定
視圖模型:
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