silverlight 4 datagrid:如何在验证面板中放置自定义消息而不是“错误”

时间:2011-03-22 17:40:25

标签: validation silverlight-4.0 datagrid

因此,在datagrid或dataform中如果存在验证错误,我们在红丝带上会出现白色错误字。

如何将信息放在那里?

编辑:澄清:我对一切感到满意。我唯一想要的是将datagrid验证面板中显示的“ERROR”字翻译成其他语言。

2 个答案:

答案 0 :(得分:1)

因为Silverlight在关注点分离方面很重要,所以这应该通过使用Data Annotation Validators和INotifyDataErrorInfo在中间层进行验证来实现。一个好的方法是依靠WCF RIA服务及其提供的服务。请参阅此文章:http://www.silverlightshow.net/items/WCF-RIA-Services-Part-6-Validating-Data.aspx

您也可以创建自己的错误控件来显示错误,但纯粹在客户端执行业务规则的模式并不理想。 WCF RIA Services允许在中间层编码的业务规则毫不费力地流入客户端代码。然而,网格的一个问题是,您从未真正编辑过多行,因此无法显示多行错误。

答案 1 :(得分:1)

好吧,我设法通过将其添加到我的自定义样式资源字典来完成此操作:

” Style TargetType =“dataInput:ValidationSummary”>

    <Setter Property="HeaderTemplate">
        <Setter.Value>
            <DataTemplate>
                <Border Background="#FFDC020D" CornerRadius="2" x:Name="Header" Margin="-1,-1,-1,0">
                    <StackPanel Margin="6,2,6,4" Orientation="Horizontal" VerticalAlignment="Top">
                        <Grid Height="13" Width="13">
                            <Ellipse Margin="0" RenderTransformOrigin="0.5,0.5" >
                                <Ellipse.Stroke>
                                    <LinearGradientBrush StartPoint="0.505,0.65" EndPoint="0.5,0.058">
                                        <GradientStop Color="#FFCA000C" Offset="0"/>
                                        <GradientStop Color="#FFFF9298" Offset="0.991"/>
                                    </LinearGradientBrush>
                                </Ellipse.Stroke>
                                <Ellipse.Fill>
                                    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                                        <GradientStop Color="#FFFFFFFF" Offset="0"/>
                                        <GradientStop Color="#FFFDC8C8" Offset="1"/>
                                    </LinearGradientBrush>
                                </Ellipse.Fill>
                            </Ellipse>
                            <Path Fill="#DDD43940" Data="M5.5,2.5 L7.5,2.5 L7.5,8 L5.5,8 M5.5,9.5 L7.5,9.5 L7.5,10.5 L5.5,10.5"/>
                        </Grid>
                        <TextBlock Padding="4,1,0,0" Text="CUSTOM MESSAGE" Foreground="#FFFFFFFF" FontWeight="Bold"/>
                    </StackPanel>
                </Border>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

其中dataInput是 xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input"

这些样式和模板非常冗长