如何将文本框周围的红色框更改为带有感叹号的红色圆圈? 错误时,WPF可以在TextBox周围显示红色边框或警告图标。 当我创建一个简单的测试应用程序以测试验证规则时,只会出现红色边框。但是我在带有红色框的WPF应用程序的屏幕截图中看到了警告图标。我的老板要求我为我们的测试应用设置此类图标。
我试图查看wpf-samples:它们使用CSLA中的标准警告图标,而没有其他编码。我不知道为什么在尝试跟踪验证示例时为什么只有CSLA的红色边框而不是CSLA的警告图标。
P.S。我可以手动创建图标,但是我有严格的要求使用在验证错误时自动出现的标准图标。以下代码显示了我如何手动执行此操作:
<Style TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel>
<AdornedElementPlaceholder >
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Ellipse HorizontalAlignment="Right"
Grid.Row="0"
Grid.Column="0"
Height="20"
Width="20"
Fill="Red" VerticalAlignment="Center" />
<TextBlock HorizontalAlignment="Right"
Grid.Row="0"
Grid.Column="0"
Foreground="White"
FontSize="20">!</TextBlock>
</Grid>
</AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
答案 0 :(得分:1)
除了输入控件周围的红色边框之外,WPF没有任何自动显示方式。
CSLA根本不显示任何内容。它通过使用Microsoft定义的IDataErrorInfo
接口告诉WPF,存在验证错误。您所看到的是显示红色边框的默认WPF行为。
您可以通过创建新的XAML样式来自定义WPF如何显示验证错误。
但是,Csla.Xaml
名称空间(如果您在UI项目中引用了CSLA-WPF NuGet包,则可用)包括一个名为PropertyStatus
的WPF控件。此控件基于IDataErrorInfo
界面和CSLA业务对象公开的其他元数据,了解如何显示错误,警告和信息图标以及工具提示。
要使用PropertyStatus
控件,您可以将控件直接放入页面的XAML中,或创建XAML样式。您可以在CSLA参考应用程序ProjectTracker中看到使用此控件的示例。
答案 1 :(得分:0)
SystemIcons.Exclamation可能会给您所需的符号。需要将类型为Icon的对象转换为BitmapSource才能在xaml中使用。