我正在使用IValueConverter將double轉換爲字符串。由轉換器創建的字符串不顯示在相應的文本框中。例如,如果用戶輸入1.1,則我的值轉換器可能將其格式設置爲'1'。不過,我仍然在文本框中看到'1.1'。我在調試器中驗證了轉換器的Convert()方法被調用,並返回'1'。我缺少一些基本的東西嗎?IValueConverter未更新wpf文本框
轉換器的方法如下:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
{
return string.Empty;
}
if (value is double && targetType == typeof(string))
{
string format = parameter == null ? "{0:F2}" : (string)parameter;
string formatted = string.Format(format, value);
return formatted;
}
return value.ToString();
}
的XAML如下:
<TextBox x:Name="balance" Grid.Row="12" Grid.Column="1"
Text="{Binding Balance, Converter={StaticResource nullableConverter}, ConverterParameter=\{0:F0 \}, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, UpdateSourceTrigger=PropertyChanged}" Width="90" TextAlignment="Right" />
感謝。
你看到綁定錯誤在輸出窗口在運行時? –
不,我沒有看到任何錯誤。 – bdristan
因此,您輸入「1.1」,將文本框中的標籤拖出以觸發'UpdateSourceTrigger = PropertyChanged',將DataContext中的'Balance'屬性更新爲'1.1',轉換器代碼運行並將'1.1'轉換爲'1' ,然後TextBox.Text仍然顯示'1.1'?那不應該是這種情況......你能按照所述的順序來確認這些確切的步驟嗎? – Rachel