WPF DataGrid - Как использовать проверку ячеек и строк с DataGridTemplateColumn - PullRequest
0 голосов
/ 15 июля 2010

Как использовать проверку ячейки и строки с 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>

1 Ответ

1 голос
/ 20 января 2011

Это немного догадка, но похоже, что вы хотите предотвратить выбор определенных элементов. Самый простой способ - удалить их из списка, но вы можете сделать это с помощью проверки следующим образом.

Если выбранный элемент недействителен, выведите исключение в Setter в ViewModel:

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 (обратите внимание, что в своем вопросе вы указали ValidatesOnErrors для привязки ItemsSource - неверное свойство на неправильной привязке):

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