Привязка к dataGrid SelectedItem

1

У меня есть DataGrid:

<DataGrid AutoGenerateColumns="False" IsReadOnly="True" SelectionMode="Single" GridLinesVisibility="None">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Border BorderThickness="{Binding ???}" BorderBrush="Black" >
                        <Grid></Grid>
                    </Border>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid>

И мне нужно связать BorderThickness of Border в CellTemplate с DataGrid.SelectedItem. Например: если ячейка находится в выбранной толщине строки, она должна быть 1,1,1,1 else zero. (Я знаю об конвертерах). Как это сделать?

Теги:
wpf
datagrid

2 ответа

1
Лучший ответ

Может быть достигнуто с помощью триггеров:

  <DataGrid AutoGenerateColumns="False" IsReadOnly="True" SelectionMode="Single" GridLinesVisibility="None">
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Border  BorderBrush="Black" >
                            <Border.Style>
                                <Style TargetType="Border">
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridCell}}" Value="True">
                                            <Setter Property="BorderThickness" Value="1"></Setter>
                                        </DataTrigger>
                                    </Style.Triggers>

                                </Style>
                            </Border.Style>
                            <Grid></Grid>
                        </Border>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
         </DataGrid.Columns>
    </DataGrid>

ИЛИ

Непосредственно установить CellStyle как

       <DataGrid AutoGenerateColumns="False" IsReadOnly="True" SelectionMode="Single" GridLinesVisibility="None">
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Style.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter Property="BorderThickness" Value="1"></Setter>
                                <Setter Property="BorderBrush" Value="Black"></Setter>
                            </Trigger>
                        </Style.Triggers>

                    </Style>
  • 0
    Это не работает.
  • 0
    Попробуйте сейчас .. вам нужно установить значение = True для DataTrigger. Или предложен альтернативный подход.
Показать ещё 4 комментария
0

Конвертеры, возможно, не подходят для этого, попробуйте использовать datatrigger на выбранном элементе сетки, который изменит стиль границы, у вас есть gander на этом http://www.wpf-tutorial.com/styles/trigger-datatrigger-event -вызывать/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню