我有一个几乎与 中描述的相同的问题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