簡體   English   中英

Mahapps數據網格驗證

[英]Mahapps datagrid validation

我在WPF項目中使用MahApps ,我正在嘗試使用內置的MahApps樣式在DataGrid控件上提供一些驗證,但是我定義的驗證樣式沒有顯示。

DataGrid是:

<DataGrid BorderThickness="2" Margin="0,10,0,93" AutoGenerateColumns="False" FontSize="18"
        SelectionUnit="FullRow" SelectionMode="Single" 
        ItemsSource="{Binding DocumentLines, Mode=TwoWay}" CanUserAddRows="False" CanUserDeleteRows="False">

        <DataGrid.Columns>
            <DataGridTextColumn Header="Name" Binding="{Binding ProductName}" Width="*" IsReadOnly="True"/>
            <DataGridTextColumn Header="Code" Binding="{Binding ProductCode}" Width="*" IsReadOnly="True"/>
            <DataGridTextColumn Header="Quantity" Binding="{Binding Quantity, ValidatesOnExceptions=True}" Width="*"/>
            <DataGridTemplateColumn Header="VATPercentage" Width="*" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding VATPercentage, StringFormat=N}" TextAlignment="Right" Margin="0,0,5,0" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>

        <DataGrid.RowValidationRules>
            <val:Validation ValidationStep="UpdatedValue"/>
        </DataGrid.RowValidationRules>

        <DataGrid.RowValidationErrorTemplate>
            <ControlTemplate>
                <Grid Margin="0,-2,0,-2"
                      ToolTip="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridRow},
                            Path=(Validation.Errors)[0].ErrorContent}">
                    <Path Height="20" Width="20" Stretch="Uniform" Fill="Red" Data="F1 M 12.2495,36.8804L 36.8804,12.2496C 37.4987,11.6312 38.5012,11.6312 39.1196,12.2496L 63.7504,36.8804C 64.3688,37.4988 64.3688,38.5013 63.7504,39.1196L 39.1196,63.7505C 38.5013,64.3688 37.4987,64.3688 36.8804,63.7505L 12.2495,39.1196C 11.6312,38.5013 11.6312,37.4988 12.2495,36.8804 Z M 38,45.125C 36.0325,45.125 34.4375,46.72 34.4375,48.6875C 34.4375,50.655 36.0325,52.25 38,52.25C 39.9675,52.25 41.5625,50.655 41.5625,48.6875C 41.5625,46.72 39.9675,45.125 38,45.125 Z M 34.4375,23.75L 35.625,42.75L 40.375,42.75L 41.5625,23.75L 34.4375,23.75 Z"/>
                </Grid>
            </ControlTemplate>
        </DataGrid.RowValidationErrorTemplate>

</DataGrid>

ValidationRule是:

public class Validation : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        Line line = (value as BindingGroup).Items[0] as Line;

        if (line.Quantity <= 0)
            return new ValidationResult(false, "Erro");

        return ValidationResult.ValidResult;
    }
}

我在Onedrive示例中發布了一個小工作示例只有在App.xaml上未引用MahApps樣式時才會出現驗證樣式。

誰能幫我這個?

顯然,這已經解決了Mahapps.Metro的1.2版本,請點擊此處了解更多詳情:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM