Отключить первый столбец первой строки в WPF DataGrid - PullRequest
0 голосов
/ 14 ноября 2018

Есть ли способ (с помощью стилей и нескольких триггеров) всегда отключать первый столбец первой строки DataGrid в элементе управления WPF? Это шаблонный столбец, который показывает поле со списком в режиме редактирования и текстовое поле в обычном режиме. Я бы хотел, чтобы это никогда не входило в режим редактирования (только этот столбец). Остальные столбцы в строке должны быть в состоянии перейти в режим редактирования.

1 Ответ

0 голосов
/ 14 ноября 2018

Да, это возможно (другими словами, вы хотите отключить определенную ячейку), но я бы предпочел использовать ValueConverter или CellTemplateSelector для достижения цели.В приведенном ниже предложении есть ограничение, согласно которому вы должны установить для свойства DataGrid AlternationCount количество элементов в ItemsSource.
Это обходной путь для получения индекса строки, посколькуDataGridRow не имеет свойства для получения индекса (только метод GetIndex()).

<DataGrid ItemsSource="{Binding YourItemsCollection}" AutoGenerateColumns="false" AlternationCount="{Binding YourItemsCollection.Count}">
    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Column.DisplayIndex, RelativeSource={RelativeSource Self}}" Value="0"/>
                        <Condition Binding="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="0"/>
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.Setters>
                        <Setter Property="IsEnabled" Value="False" />
                    </MultiDataTrigger.Setters>
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.CellStyle>
</DataGrid>
...