スライダーとテキストボックスがあるstringformatを使用すると、WPFテキストボックスバインディングが機能しないで説明したのとほぼ同じ問題があり
ます。toway モードで更新トリガー onpropertychanged を使用して、スライダーの値プロパティにバインドされたテキスト ボックス。テキストボックスへのユーザー入力をチェックするので、数字または「-/+」しか入力できません。私の問題は、整数値だけでなく浮動小数点値もあり、ドットの後の桁数がわからないため、ユーザーを制限したくないことです。その目的のために文字列形式 D を使用しますStringFormat=D
が、その場合、TextBox に出力は表示されませんが、数字を入力することはでき、それがスライア値に影響を与えますが、スライダーを移動すると、テキストがテキストボックスから消えます。
スライダーの値がテキストボックスに表示されるようにしたいのですが、ドットの後に数字を入力することに制限はありません。どうすればできますか?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>