Как настроить фокус на конкретную ячейку набора инструментов WPF datagrid
Я использую инструментарий WPF, снабженный элементом управления DataGrid, чтобы отображать список продуктов вместе с его OpenStock, описанием и т.д. В этом DataGrid я установил столбец OpenStock для редактирования и остальной части, не редактируемые. Что я хочу сейчас, когда мои эти окна загружаются, я хочу настроить фокус клавиатуры на первую ячейку столбца OpenStock и, если возможно, в режиме редактирования. Я обыскал это в течение 2 дней и, наконец, разместил здесь.
любая помощь или образец кода были бы полезны.
<my:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Margin="2,2,2,55"
x:Name="dataGrid1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="White"
AlternatingRowBackground="AliceBlue" AlternationCount="2" SelectionMode="Single"
SelectionUnit="Cell" BorderThickness="0" IsTabStop="True">
<my:DataGrid.Resources>
<Style x:Key="errorStyle" TargetType="{x:Type TextBox}">
<Setter Property="Padding" Value="-2"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Background" Value="Yellow"/>
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</my:DataGrid.Resources>
<my:DataGrid.Columns>
<my:DataGridTextColumn Width="60" FocusManager.IsFocusScope="False" Binding="{Binding Path=pCode}" Header="Code" IsReadOnly="True" />
<my:DataGridTextColumn Width="150" Binding="{Binding pName}" Header="Description" IsReadOnly="True" />
<my:DataGridTextColumn Width="120" Binding="{Binding CloseStock}" Header="Closing Stock" IsReadOnly="True" />
<my:DataGridTextColumn Width="100" Binding="{Binding OpenStock, ValidatesOnExceptions=True}" Header="Open Stock"
EditingElementStyle="{StaticResource errorStyle}"/>
<my:DataGridTextColumn Width="150" Binding="{Binding YrlyOpenStock}" Header="Yearly Opening" IsReadOnly="True" />
</my:DataGrid.Columns>
</my:DataGrid>
Большое спасибо........
Ответы
Ответ 1
Вам нужно установить текущую ячейку той, которую вы хотите отредактировать, и затем вызвать BeginEdit в вашем загруженном обработчике:
dataGrid1.CurrentCell = new DataGridCellInfo(
dataGrid1.Items[0], dataGrid1.Columns[3]);
dataGrid1.BeginEdit();
Если вы даете имя DataGridTextColumn в XAML, вы можете использовать это имя, а не Columns[3]
.
Ответ 2
Используйте этот код для перемещения прокрутки к определенной ячейке
dgv.ScrollIntoView(dgv.Items [строка], dgv.Columns [col]);