小编aru*_*doy的帖子

通过验证绑定到双字段

我试图绑定TextBoxdouble一些对象的属性UpdateSourceTrigger=PropertyChanged.目标是在编辑期间立即验证输入的值是否在允许的范围内(如果没有则显示错误).我想在Model级别上实现验证,即通过IDataErrorInfo.

当我绑定到int属性时,所有工作都很好,但如果属性为double,则会出现令人沮丧的编辑行为:在删除数字的小数部分中的最后一个有效数字后 - 小数分隔符将自动擦除(包含所有可能的小数零).例如,在从数字'12 .03'中删除数字'3'之后,文本被改为'12'而不是'12 .0'.

请帮忙.

以下是示例代码:

MainWindow.xaml:

<Window x:Class="BindWithValidation.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="80" Width="200" WindowStartupLocation="CenterOwner">

  <StackPanel>
    <TextBox Width="100" Margin="10" Text="{Binding DoubleField, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}">
      <TextBox.Style>
        <Style TargetType="TextBox">
          <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
              <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
            </Trigger>
          </Style.Triggers>
        </Style>
      </TextBox.Style>
    </TextBox>
  </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml.cs:

namespace BindWithValidation
{
  public partial class MainWindow : Window
  {
    private UISimpleData _uiData = new UISimpleData();

    public MainWindow()
    {
      InitializeComponent();
      DataContext = _uiData;
    }
  }
} …
Run Code Online (Sandbox Code Playgroud)

wpf binding

16
推荐指数
3
解决办法
1万
查看次数

标签 统计

binding ×1

wpf ×1