설명과 거의 같은 문제가 있습니다. WPF textbox binding not working when using stringformat 슬라이더와 텍스트 상자가 있습니다. Textbox는 toway 모드에서 onproperty가 변경된 update trigger로 슬라이더의 value 속성에 바인딩됩니다. 나는 사용자 입력을 텍스트 상자에서 확인하므로 숫자 나 "-/+"만 입력 할 수 있습니다. 제 문제는 정수뿐만 아니라 값을 플로팅하는 것입니다. 그래서 점을 찍을 때 얼마나 많은 자리가 표시되지 않으므로 사용자를 제한하고 싶지는 않습니다. 그 목적을 위해 문자열 형식 D StringFormat=D
을 사용합니다. 그러나이 경우 TextBox에 출력이 표시되지 않지만 여전히 숫자를 입력 할 수 있으며 더가는 값에 영향을 미칩니다. 그러나 슬라이더를 이동하면 텍스트가 텍스트 상자에서 사라집니다.XAML의 텍스트 상자에 도트를 바인딩을 사용하여
슬라이더의 값을 텍스트 상자에 표시하고 도트 뒤에 숫자를 입력 할 필요가 없습니다. 내가 어떻게 해? 오후 8시 30 분 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
나는 내 자신의 변환기를 작성하려고했지만 제대로 작동하지 않습니다. – Denis