WPF TextBox控件过滤器+验证

时间:2011-03-17 14:38:00

标签: wpf

我将TextBox绑定到窗口中的文本属性,并带有验证规则(长度为= 4)。我需要添加过滤,所以我采用了ThomasLebruns WPFDeveloperTools FilteredTextBox。这有效,但当我使用控件时,我每次都指定Validation.ErrorTemplate和Binding.ValidationRules - 我想将它们构建到FilteredTextBox控件中,以便它们自动应用于每个FilteredTextBox - 如何管理? 目前我必须:

<Window>
  <Grid>
    <ps:FilteredTextBox x:Name="textboxPanId" Type="Hex" Grid.Column="1" Grid.Row="1" Height="35" Margin="0,2,0,2" MaxLength="4"
                        Validation.ErrorTemplate="{StaticResource TextBoxErrorTemplate}">
      <TextBox.Text>
        <Binding Path="pan_id" UpdateSourceTrigger="PropertyChanged">
          <Binding.ValidationRules>
            <ps:PanIdValidation />
          </Binding.ValidationRules>
        </Binding>
      </TextBox.Text>
    </ps:FilteredTextBox> 

我想:

<ps:FilteredTextBox x:Name="textboxPanId" Type="Hex" Grid.Column="1" Grid.Row="1" Height="35" Margin="0,2,0,2" MaxLength="4">
  <TextBox.Text>
    <Binding Path="pan_id" UpdateSourceTrigger="PropertyChanged"/>
  </TextBox.Text>

但已应用错误模板和验证规则。如何使用FilteredTextBox xaml的其余部分将Validation.ErrorTemplate和Binding.ValidationRule的设置移动到资源字典中。

<ResourceDictionary>
  <ControlTemplate x:Key="TextBoxErrorTemplate">
    ...
  </ControlTemplate>

1 个答案:

答案 0 :(得分:0)

我认为如果你在ResourceDictionary中为FilteredTextBox创建一个样式,你可以在那里设置它们,但至少肯定是ErrorTemplate。