首页 > 解决方案 > 使用验证器更新 xaml 中的文本框的 WPF 按钮

问题描述

如何获得将文本框中的文本重置为已知值的按钮?在我的示例中,验证规则被触发,因此我不能使用按钮命令更新属性,这很好,因为如果属性无效,我不希望设置属性。我只想让按钮在不涉及属性的情况下基本上重置 xaml 中的值。我该怎么做?

   <TextBox Grid.Column="1" Grid.Row="9" HorizontalAlignment="Left"  Height="20" Width="105" Name="Elevation"
             Validation.ErrorTemplate="{StaticResource validationTemplate1}" Style="{StaticResource textBoxInError}">
        <TextBox.Text >
            <Binding Path="Elevation" Mode="TwoWay" UpdateSourceTrigger="LostFocus">
                <Binding.ValidationRules>
                    <rules:NotEmptyValidationRule ValidatesOnTargetUpdated="True" ValidationStep="RawProposedValue"/>
                    <rules:DoubleValidationRule ValidatesOnTargetUpdated="True" ValidationStep="RawProposedValue"/>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
 <Button Grid.Column="2" Grid.Row="9" Height="20" Command="{Binding ClickResetCommand}" CommandParameter="Elevation" >R</Button>

仍在寻找 XAML 解决方案,但现在我已将按钮更改为使用 OnClick 并在后面的代码中使用以下...

  case "Elevation":
   Elevation.Text = "50";
   Validation.ClearInvalid(Elevation.GetBindingExpression(TextBox.TextProperty) ?? throw new InvalidOperationException());
   Elevation.Focus();
  break;

标签: wpfxamlmvvm

解决方案


推荐阅读