Отключите позицию табуляции между столбцами в WPF datagrid

У меня есть Инструментарий WPF datagrid с mulitple столбцами. Я пытаюсь получить поведение, где можно снабдить вкладками во вкладку использования сетки, затем вкладка снова использование единственной вкладки. Например, Я не хочу снабжать вкладками через все столбцы или ячейки сетки, только однажды в, и однажды.

Есть ли простое решение, я попытался установить TabNavigation на Однажды, наряду с отключением TabStop (не показанный в коде ниже) и установка TabNavigation на столбцах ни к Одному, но без успеха.

Есть ли что-то, что я пропускаю, или я должен обработать клавишу Tab в коде?

        <my:DataGrid Name="datagrid"
                     AutoGenerateColumns="False" IsReadOnly="True"
                     CanUserAddRows="False" CanUserDeleteRows="False"
                     Background="White"
                     KeyboardNavigation.TabNavigation="Once">
            <my:DataGrid.Columns>
                <my:DataGridTextColumn x:Name="ID" Header="ID" Width="1*" ></my:DataGridTextColumn>
                <my:DataGridTextColumn x:Name="Ticker" Header="Ticker" Width="1*" KeyboardNavigation.TabNavigation="None"></my:DataGridTextColumn>
                <my:DataGridTextColumn x:Name="OfficialName" Header="Name" Width="3*" KeyboardNavigation.TabNavigation="None"></my:DataGridTextColumn>
            </my:DataGrid.Columns>
        </my:DataGrid>
15
задан Thies 21 January 2010 в 17:19
поделиться

2 ответа

PROVA 3.0 http://www.prova.ws приближается к завершению. Это, однако, не просто другой пролог, кроме смены стилей программирования, особенно полезным для легкой двунаправленной интеграции Java, программирование реактивного агента, интеграции с логикой ESB, рабочего процесса и обработки событий. Эта версия является полным перезаписи от нуля, поэтому некоторые более старые функции, такие как интеграция совы, отсутствуют, но связаны, чтобы вернуться в следующую ревизию.

-121--1147347-

Интересно, что установка клавиатуры, непосредственно на DataGridTextColumn не работает. Альтернатива, которая должна работать, - это создать стиль DataGridCell.

<toolkit:DataGrid.CellStyle>
    <Style TargetType="{x:Type toolkit:DataGridCell}">
        <Setter Property="KeyboardNavigation.IsTabStop"
                Value="False" />
        <Style.Triggers>
            <Trigger Property="IsSelected"
                     Value="True">
                <Setter Property="KeyboardNavigation.IsTabStop"
                        Value="True" />
            </Trigger>
        </Style.Triggers>
    </Style>
</toolkit:DataGrid.CellStyle>

Присоединение этого к DataGrid гарантирует, что ячейка является только TABSTOP, если она уже выбрана. Однако, если вы выбираете полные строки и у вас нет Visuleunit = «Cell», установленные на DataGrid, он все еще будет циклически через каждую колонку выбранной в данный момент строки.

Вместо этого мы можем создавать несколько сотовых видов, как ресурсы в DataGrid:

<toolkit:DataGrid.Resources>

    <Style  x:Key="SelectableCellStyle"
            TargetType="{x:Type toolkit:DataGridCell}">
        <Setter Property="KeyboardNavigation.IsTabStop"
                Value="False" />
        <Style.Triggers>
            <Trigger Property="IsSelected"
                     Value="True">
                <Setter Property="KeyboardNavigation.IsTabStop"
                        Value="True" />
            </Trigger>
        </Style.Triggers>
    </Style>

    <Style TargetType="{x:Type toolkit:DataGridCell}">
        <Setter Property="KeyboardNavigation.IsTabStop"
                Value="False" />
    </Style>

</toolkit:DataGrid.Resources>

Теперь у нас есть стиль, применяемый для всех данных DatagridCells по умолчанию и отключение от Tabstop и стиль ключа, который позволяет выделению, когда ячейка (или цельная строка ) выбран. Применение этого стиля только к одному столбцу даст нам один и тот же эффект с одним вкладками, позволяя всю строку и все его столбцы были выбраны.

 <my:DataGridTextColumn x:Name="ID" Header="ID" Width="1*" CellStyle={StaticResource  SelectableCellStyle}"/>

Это также прекращает табуляцию в DataGrid, если ничего не выбрано, что может быть предпочтительным или не в зависимости от ситуации, которую вы используете.

20
ответ дан 1 December 2019 в 02:10
поделиться

Спасибо RMOORE. Чтобы остановить вкладку, которая должна отключаться для столбцов, я взял свой ответ и немного изменил его;

     <my:DataGrid Name="datagrid" 
                 AutoGenerateColumns="False" IsReadOnly="True" 
                 CanUserAddRows="False" CanUserDeleteRows="False" 
                 Background="White" 
                 KeyboardNavigation.TabNavigation="Once"
                 SelectionUnit="FullRow"> 
        <my:DataGrid.Columns> 
            <my:DataGridTextColumn x:Name="ID" Header="ID" Width="1*" ></my:DataGridTextColumn> 
            <my:DataGridTextColumn x:Name="Ticker" Header="Ticker" Width="1*">
                    <my:DataGridTextColumn.CellStyle>
                        <Style TargetType="{x:Type my:DataGridCell}">
                            <Setter Property="KeyboardNavigation.IsTabStop" Value="False"></Setter>
                        </Style>
                    </my:DataGridTextColumn.CellStyle>
            </my:DataGridTextColumn> 

            <my:DataGridTextColumn x:Name="OfficialName" Header="Name" Width="3*">
                  <my:DataGridTextColumn.CellStyle>
                        <Style TargetType="{x:Type my:DataGridCell}">
                            <Setter Property="KeyboardNavigation.IsTabStop" Value="False"></Setter>
                        </Style>
                  </my:DataGridTextColumn.CellStyle>
            </my:DataGridTextColumn> 
        </my:DataGrid.Columns> 
    </my:DataGrid>

SO TRICKS;

  1. VILESTUNIT = «FOLLROW» заставляет графический интерфейс выглядеть так, как будто вы делаете вещи одним рядным разыскивается).
  2. , добавив талово в столбцы, я хочу отключить tabstop in (но не включая его в тех, кого я хотел бы остановить), позволил мне предпринять контроль над тому, какие ячейки вкладывают вкладку. - Клавиатурнавизация. Табнавигация не имеет эффекта при определении на столбцах.
10
ответ дан 1 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: