自定义文本框控件中的 ValidationError 模板
ValidationError template in a custom textbox control
我创建了一个扩展文本框控件的自定义控件,以允许仅输入字母数字字符。
后来,我用INotifyDataErrorInfo实现了错误处理。问题是当显示错误时,在普通的文本框中它显示正确,但在我的自定义文本框中它们没有显示,只有边框变成红色。
自定义文本框有点小,有点像双边框。
这是我的代码:
// CustomTextbox.cs
using System.Text.RegularExpressions;
using System.Windows.Controls;
using System.Windows.Input;
namespace ExampleApp.Controls
{
public class CustomTextbox: TextBox
{
private static readonly Regex regex = new Regex("^[a-zA-Z0-9]+$");
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
if (e.Key == Key.Space)
{
e.Handled = true;
}
base.OnKeyDown(e);
}
protected override void OnPreviewTextInput(TextCompositionEventArgs e)
{
if (!regex.IsMatch(e.Text))
{
e.Handled = true;
}
base.OnPreviewTextInput(e);
}
}
}
// MainWindow.xaml
<customControls:CustomTextbox Text="{Binding Title}"
FontSize="32" Width="200"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0 -200 0 0"
/>
<TextBox Text="{Binding Title}"
FontSize="32" Width="200"
HorizontalAlignment="Center"
VerticalAlignment="Center"
/>
我是否需要从文本框继承模板或类似的东西?
谢谢!
<customControls:CustomTextbox Text="{Binding Title}"
FontSize="32" Width="200"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0 -200 0 0"
Style={StaticRessource {x:Type TextBox}}
/>
有了这个,您将获得与 TextBox 相同的样式。如果您已明确设置 TextBox 样式,这将不起作用。在这种情况下,您只需要从 TextBox
复制样式 属性
我创建了一个扩展文本框控件的自定义控件,以允许仅输入字母数字字符。
后来,我用INotifyDataErrorInfo实现了错误处理。问题是当显示错误时,在普通的文本框中它显示正确,但在我的自定义文本框中它们没有显示,只有边框变成红色。
自定义文本框有点小,有点像双边框。
这是我的代码:
// CustomTextbox.cs
using System.Text.RegularExpressions;
using System.Windows.Controls;
using System.Windows.Input;
namespace ExampleApp.Controls
{
public class CustomTextbox: TextBox
{
private static readonly Regex regex = new Regex("^[a-zA-Z0-9]+$");
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
if (e.Key == Key.Space)
{
e.Handled = true;
}
base.OnKeyDown(e);
}
protected override void OnPreviewTextInput(TextCompositionEventArgs e)
{
if (!regex.IsMatch(e.Text))
{
e.Handled = true;
}
base.OnPreviewTextInput(e);
}
}
}
// MainWindow.xaml
<customControls:CustomTextbox Text="{Binding Title}"
FontSize="32" Width="200"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0 -200 0 0"
/>
<TextBox Text="{Binding Title}"
FontSize="32" Width="200"
HorizontalAlignment="Center"
VerticalAlignment="Center"
/>
我是否需要从文本框继承模板或类似的东西?
谢谢!
<customControls:CustomTextbox Text="{Binding Title}"
FontSize="32" Width="200"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0 -200 0 0"
Style={StaticRessource {x:Type TextBox}}
/>
有了这个,您将获得与 TextBox 相同的样式。如果您已明确设置 TextBox 样式,这将不起作用。在这种情况下,您只需要从 TextBox
复制样式 属性