Es scheint, dass WPF eine Validierungsregel hat, die standardmäßig aktiviert ist. Wenn ich nicht-numerischen Text in das gebundene Textfeld eingib und es aushefte, wird ein Lese-Rand darum herum angezeigt. Was geht hier vor sich? Ich habe ValidatesOnExceptions auf false gesetzt, woher kommt die Validierungsregel? Ich verwende Version 4.5.2 des .Net-Frameworks.Wie kann ich die Standardvalidierung in WPF ausschalten?
Hier ist meine XAML
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication2"
mc:Ignorable="d"
Title="MainWindow" Height="159.206" Width="193.953">
<Grid>
<TextBox x:Name="textBox" Height="23" HorizontalAlignment="Left" VerticalAlignment="Top" TextWrapping="Wrap"
Text="{Binding Foo, ValidatesOnExceptions=False, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
Width="91" Margin="10,10,0,0"/>
<TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="10,48,0,0"
TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="91"/>
</Grid>
</Window>
Hier ist der Code hinter
namespace WpfApplication2
{
public partial class MainWindow : Window
{
public int Foo { get; set; } = 42;
public MainWindow()
{
InitializeComponent();
}
}
}
Vielen Dank. Was ist wenn ein int? und ich möchte, dass der leere Text auf null abgebildet wird, dies scheint nicht standardmäßig zu funktionieren. Muss ich einen benutzerdefinierten Konverter schreiben? – Shane
Wahrscheinlich. Sie müssen die leere Zeichenfolge in null konvertieren. String.Empty ist kein gültiges int? Wert. – mm8