限制依赖于所选组合框项目的文本框输入
本文关键字:项目 文本 输入 组合 依赖于 | 更新日期: 2023-09-27 18:23:44
我有一个绑定到名为"Attrs"的ObservableCollection的组合框。我还有一个绑定到"CustomValue"的文本框。
根据用户选择的Attr,我希望文本框只接受某些字符。例如,如果Attr.Name为"Numeric",我希望文本框只接受数字字符,如果Attrs.Name为"Text",我则希望文本框接受任何内容。
我查看了DataTemplates和Validation,但未能解决问题或找到解决方法。
任何想法或链接都可能有所帮助。
我本来打算发表评论,问你是否已经尝试过了,但我还没有足够高的代表来发表评论,所以我想我会在这里回答。此外,不幸的是,我现在能给你的只是VB.Net代码,而不是c#。但希望它至少能有所帮助。
您可以创建一个继承TextBox的自定义控件,并创建一个可以绑定到ComboBox所选类型的DependencyProperty:
Private Shared InputTypeProperty As DependencyProperty = DependencyProperty.Register("InputType", GetType(MyInputType), GetType(MyTextBox))
Public Property InputType As MyInputType
Get
Return GetValue(InputTypeProperty)
End Get
Set(value As MyInputType)
SetValue(InputTypeProperty, value)
End Set
End Property
然后在自定义控件中,使用PreviewKeyDown事件来处理基于控件的InputType属性的输入。每当输入无效字符类型时,将e.Handled设置为True,它将忽略输入。
Private Sub MyTextBox_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles Me.PreviewKeyDown
Select Case InputType
'Handle input here
End Select
End Sub
如果类型发生更改并且包含无效字符,您可能还希望在依赖项属性中进行PropertyChangedCallback以清除TextBox。