簡體   English   中英

WPF DataGrid-如何在DataGridTemplateColumn中使用單元格和行驗證

[英]WPF DataGrid - How do I use cell and row validation with DataGridTemplateColumn

如何在DataGridTemplateColumn中使用單元格和行驗證?

<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding DataType}"/>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
        <ComboBox SelectedItem="{Binding DataType}" ItemsSource="{Binding Source={x:Static app:ApplicationConfiguration.DataTypes}, ValidatesOnDataErrors=True}"/>
    </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>

有點猜測,但是您似乎想防止選擇某些項目。 最簡單的方法是將它們從列表中刪除,但是您可以使用驗證來進行以下操作。

如果所選項目無效,則在ViewModel的Setter中引發異常:

public object DataType
{
    get { return dataType; }
    set
    {
        if(valueNotAllowed(value))
            throw new Exception(string.Format("{0} is not a valid selection", value.ToString());
        dataType = value;
    }
}

然后將SelectedItem的綁定設置為ValidateOnExceptions(請注意,在您的問題中,您為ItemsSource綁定指定了ValidatesOnErrors-錯誤的綁定上的錯誤屬性):

<ComboBox SelectedItem="{Binding Path=DataType, ValidatesOnExceptions=True}" 
ItemsSource="{Binding Source={x:Static app:ApplicationConfiguration.DataTypes}}"/>

暫無
暫無

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

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