我有一個幾乎與 中描述的相同的問題WPF textbox binding not working when using stringformat 我有滑塊和文本框。文本框綁定到滑動條的值屬性,更新觸發器onpropertychanged在toway模式下。我在文本框中檢查用戶輸入,所以我只能輸入數字或「 -/+」。 我的問題是,我不僅有整數,但也浮動值,我現在不會有點後點多少數字,所以我不想限制用戶。 爲此,我使用字符串格式D StringFormat=D
,但是在那種情況下TextBox中沒有可見的輸出,但我仍然可以輸入數字並且影響較小的值,但是當我移動滑塊時 - 文本從文本框中消失。使用綁定在XAML中的TextBox中的點
我希望從滑塊的值在文本框中可見,我沒有限制在點後輸入數字。我該怎麼做? P.S.我正在使用.NET 4.5。
這裏是我的轉換器:
class ToStringConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
return value.ToString();
}
return 0;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
float fvalue = System.Convert.ToSingle(value.ToString(), culture);
return fvalue;
}
return 0;
}
}
它顯示值不錯,但我不能輸入值 - 它的崩潰,隨時切換到最大值,而不是我想。
這裏是我的XAML代碼
<Page.Resources >
<settingsManager:RoundingConverter x:Key="RoundingConverter"></settingsManager:RoundingConverter>
<settingsManager:ToStringConverter x:Key="ToStringConverter"></settingsManager:ToStringConverter>
</Page.Resources>
<TextBox x:Name="TextBoxFirstPersonCameraPositionX" Text="{Binding ElementName=SliderFirstPersonCameraPositionX, Path=Value, Mode=TwoWay, IsAsync=True, Delay=0, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource ToStringConverter}}"
Width="100" VerticalAlignment="Center" Margin="10,0,0,0" FontWeight="Normal" MaxWidth="200" MinWidth="198" HorizontalScrollBarVisibility="Auto" MaxLength="40" DataObject.Pasting="TextBoxPasting" PreviewTextInput="OnPreviewTextInput"
>
</TextBox>
分享您當前的代碼可以幫助他人快速解決您的問題 – Isantipov 2013-04-07 14:56:26
我嘗試過寫我自己的轉換器,但它不能正常工作: – Denis 2013-04-07 19:07:33