WPF - 数据网格 - 显示一个文本框以在选择其行时由用户设置值
WPF - datagrid - display a text box to set the value by user when its row was selected
我有一个数据网格,其中包含显示为行的库存项目列表。如何实现当用户选择项目行时显示一个文本框以输入所需的订单数量?提前致谢。
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>
您可以按以下方式使用 `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;
}
}
我有一个数据网格,其中包含显示为行的库存项目列表。如何实现当用户选择项目行时显示一个文本框以输入所需的订单数量?提前致谢。
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>
您可以按以下方式使用 `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;
}
}