我遇到的问题与 WPF 文本框绑定中描述的问题几乎相同,
使用 stringformat 时
我有滑块和文本框。文本框绑定到滑块的值属性,更新触发器 onpropertychanged 在 toway 模式下。我在文本框中检查用户输入,所以我只能输入数字或“-/+”。我的问题是我不仅有整数,还有浮点值,而且我现在不知道点后有多少位数,所以我不想限制用户。StringFormat=D
为此,我使用字符串格式 D ,但在这种情况下,TextBox 中没有输出可见,但我仍然可以输入数字并且它会影响 slier 值,但是当我移动滑块时 - 文本从文本框中消失。
我希望滑块中的值在文本框中可见,并且在点后输入数字没有限制。我该怎么做?PS我正在使用.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>