Невозможно изменить значение в ячейке DataGrid - PullRequest
0 голосов
/ 21 января 2019

У меня есть DataGrid, пытающийся проверить ввод пользователя с помощью IDataErrorInfo.Всякий раз, когда пользователь вводит неверные данные, строка DataGrid должна быть помечена как ошибочная.У меня проблема в том, что когда я исправляю неверный ввод, это исправление отклоняется, и старое / недействительное значение остается в DataGridCell.

Вот стиль, который я использую:

<Style TargetType="{x:Type DataGridRow}">
<Setter Property="FontSize" Value="16"/>
<Setter Property="FontFamily" Value="ArialMT"/>
<Setter Property="Height" Value="24"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="ValidationErrorTemplate">
    <Setter.Value>
        <ControlTemplate>
            <Grid>
                <Ellipse Width="12" Height="12" Fill="Red" Stroke="Black" StrokeThickness="0.5"/>
                <TextBlock FontWeight="Bold" Padding="4,0,0,0" Margin="0" VerticalAlignment="Top" Foreground="White" Text="!" />
            </Grid>
        </ControlTemplate>
    </Setter.Value>
</Setter>
<Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BorderBrush" Value="Red"/>
        <Setter Property="IsEnabled" Value="True" />
        <!--<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors).CurrentItem.ErrorContent}"/>-->
        <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
        <!--<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors).ErrorContent}"/>-->
    </Trigger>
    <Trigger Property="Validation.HasError" Value="false">
        <Setter Property="ToolTip" Value=""/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="BorderBrush" Value="Transparent"/>
    </Trigger>
</Style.Triggers>

Вот столбец / ячейка, которые я хочу показать:

<DataGridTextColumn x:Name="TagCycle" Header="Cycle" 
                                Binding="{Binding Mode=TwoWay, Path=RawTag.Cycle, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True, NotifyOnValidationError=True, ValidatesOnNotifyDataErrors=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" 
                                ElementStyle="{StaticResource ResourceKey=textBlockErrStyle}">
    <DataGridTextColumn.CellStyle>
        <Style >
            <Setter Property="FrameworkElement.HorizontalAlignment" Value="Stretch"/>
            <Setter Property="TextBlock.TextAlignment" Value="Right"/>
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

Итак, почему я больше не могу исправить ошибочное значение?

...