1
當您拖動滑塊時,會得到一個ConvertBack(預計),但爲什麼然後我會直接得到一個「Convert」?我只希望Convert在第一次初始化時被調用,或者如果它正在引發屬性更改通知,但它不會。WPF循環轉換器
<Window x:Class="WpfApplication10.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:WpfApplication10"
Title="MainWindow">
<Slider Value="{Binding Value, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Converter={l:Converter}}"/>
</Window>
public class Converter : MarkupExtension, IValueConverter
{
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
}
public partial class MainWindow : Window
{
public double Value { get; set; }
public MainWindow()
{
DataContext = this;
InitializeComponent();
}
}
+1爲好鏈接和答案。 – Sheridan
這出現在4.5中用3.5編寫的代碼中。在少數情況下,傳入Convert/ConvertBack的值不完全相同(例如數字類型的精度損失),並且會導致奇怪的行爲。如果你可以選擇退出新的行爲,那將會很好。 – pastillman
這有點令人驚訝,我不會指望這種行爲是愚蠢的 - 你的意思是浮點數/雙精度的精度很奇怪嗎? float/double是單向的1.5和1.499999999是正常的,這是避免使用它們的一個原因,除非你的意思是。如果是這樣的話,你有沒有考慮使用小數? – ianschol