#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;
}
}