【问题标题】:WPF - datagrid - display a text box to set the value by user when its row was selectedWPF - 数据网格 - 显示一个文本框以在选择其行时由用户设置值
【发布时间】:2021-11-15 14:51:19
【问题描述】:

我有一个数据网格,其中包含显示为行的库存项目列表。当用户选择项目行时,如何实现显示文本框以输入所需的订单数量?提前致谢。

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>

【问题讨论】:

    标签: wpf binding datagrid


    【解决方案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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-27
      • 2017-09-04
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 2015-02-01
      • 2011-01-31
      • 2014-03-25
      • 2018-04-24
      相关资源
      最近更新 更多