【问题标题】:DataGrid column validation error templateDataGrid 列验证错误模板
【发布时间】:2017-04-30 22:37:12
【问题描述】:

我有一个 DataGrid 和一个 DataGridTextColumn 需要一些验证。

<DataGridTextColumn Header="Key" Width="100">
<DataGridTextColumn.Binding>
    <Binding Path="Key">
        <Binding.ValidationRules>
            <local:DistinctValidation/>
        </Binding.ValidationRules>
    </Binding>
</DataGridTextColumn.Binding>

DataGrid 本身没有应用样式,但DataGridTextColumn 具有以下样式:

<Style TargetType="{x:Type DataGridTextColumn}">
<Setter Property="Validation.ErrorTemplate">
    <Setter.Value>
        <ControlTemplate>
            <StackPanel>
                <AdornedElementPlaceholder x:Name="placeholder" />
                <Popup HorizontalAlignment="Left" PopupAnimation="Fade" Placement="Bottom" IsOpen="true">
                    <TextBlock Text="{Binding [0].ErrorContent}"/>
                </Popup>
            </StackPanel>
        </ControlTemplate>
    </Setter.Value>
</Setter>

为简单起见,我尝试将 Popup 上的 IsOpen 始终设置为 true。然而弹出窗口永远不会出现

【问题讨论】:

  • 能否请您发布您的 DistinctValidation 代码?我也在寻找一种适当的解决方案来防止 DataGrid 中出现重复

标签: .net wpf validation xaml datagrid


【解决方案1】:

您应该为要应用的模板设置列的 EditingElementStyle 的 Validation.ErrorTemplate 属性:

<DataGridTextColumn Binding="{Binding Test}">
  <DataGridTextColumn.EditingElementStyle>
    <Style TargetType="TextBox">
        <Setter Property="Validation.ErrorTemplate">
            <Setter.Value>
                <ControlTemplate>
                    <StackPanel>
                        <AdornedElementPlaceholder x:Name="placeholder" />
                        <Popup HorizontalAlignment="Left" PopupAnimation="Fade" Placement="Bottom" IsOpen="true">
                            <Grid Background="White">
                                <TextBlock Text="{Binding [0].ErrorContent}"/>
                            </Grid>
                        </Popup>
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
  </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>

【讨论】:

  • 按预期工作!非常感谢
猜你喜欢
  • 2016-02-26
  • 2014-08-08
  • 2011-06-29
  • 2016-12-03
  • 2018-06-03
  • 2016-07-11
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多