WPF — datagrid — отображение текстового поля для установки значения пользователем при выборе его строки

#wpf #binding #datagrid

Вопрос:

У меня есть таблица данных, которая включает список товаров, которые отображаются в виде строк. Как я могу реализовать, в котором отображается текстовое поле для ввода желаемого количества заказа, когда пользователь выбирает строку товара? заранее спасибо.

XAML

 <DataGrid.Columns>              
            <DataGridTextColumn Header="Id" Binding="{Binding Path=ItemId}"></DataGridTextColumn>
            <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}"></DataGridTextColumn>
            <DataGridTextColumn Header="Price" Binding="{Binding Path=Price}"></DataGridTextColumn>
            <DataGridTextColumn Header="InStock" Binding="{Binding Path=InStock}"></DataGridTextColumn>             
            <DataGridTextColumn Header="Quantity" x:Name="QuantityTextBox" Visibility="Hidden"/>
        </DataGrid.Columns>
 

Ответ №1:

вы можете использовать столбец DataGridTemplateColumn следующим образом :

 <DataGridTemplateColumn Header="{x:Static p:Resources.Quantity}">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Quantity,UpdateSourceTrigger=PropertyChanged}" Width="100" PreviewTextInput="CheckIsInteger" TextChanged="QuantityChanged" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
 

Затем вы также можете проверить, что пользователь вставляет только номера (CheckIsInteger) :

 private void CheckIsInteger(object sender, TextCompositionEventArgs e)
{
    int parsedValue;
    if (!int.TryParse(e.Text, out parsedValue))
    {
        e.Handled = true;
    }
}