WPF 文本框修改数据触发事件

WPF 文本框修改数据触发事件

1、xaml文件页面布局---   Grid中布局输入文本框

效果:

 

<DataGrid
                x:Name="TenantDataGrids"
                Width="779"
                Height="194"
                AutoGenerateColumns="False"
                CanUserAddRows="False"
                ColumnHeaderStyle="{DynamicResource MyDataGridColumnHeadeStyle}"
                HeadersVisibility="All"
                ItemsSource="{Binding PurchaseInfoList}">

                <DataGrid.Columns>
                    <!--<DataGridTemplateColumn Width="50"></DataGridTemplateColumn>?
                    <DataGridTemplateColumn Width="50" />
                    <DataGridTemplateColumn Width="50" />-->
                    <DataGridTextColumn
                        Binding="{Binding GoodInfo.commoditycode}"
                        EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
                        Header="商品编码" />
                    <DataGridTextColumn
                        Binding="{Binding GoodInfo.productname}"
                        EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
                        Header="商品名称" />
                    <DataGridTextColumn
                        Binding="{Binding PurchaseInfo.BuyNum}"
                        EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
                        Header="已入数量" />
                    <DataGridTemplateColumn Width="100" Header="新入数量">

                        <DataGridTemplateColumn.CellTemplate>
                            <!--  https://www.cnblogs.com/fdyang/p/10160503.html  -->
                            <!--  (WPF) Textbox 每次输入触发事件处理  -->
                            <DataTemplate>
                                <TextBox
                                    md:HintAssist.Hint="采购数量"
                                    DockPanel.Dock="Top"
                                    Text="{Binding SelectPurchaseGoods.BuyNum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                                    <i:Interaction.Triggers>
                                        <i:EventTrigger EventName="TextChanged">
                                            <i:InvokeCommandAction Command="{Binding Path=DataContext.BuyNumTextChanged, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding}" />
                                        </i:EventTrigger>
                                    </i:Interaction.Triggers>
                                </TextBox>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTextColumn
                        Binding="{Binding PurchaseInfo.BuyNum}"
                        EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
                        ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
                        Header="金额合计" />
                    <DataGridTemplateColumn Width="100" Header="保质期">

                        <DataGridTemplateColumn.CellTemplate>
                            <!--  https://www.cnblogs.com/fdyang/p/10160503.html  -->
                            <!--  (WPF) Textbox 每次输入触发事件处理  -->
                            <DataTemplate>
                                <TextBox
                                    md:HintAssist.Hint="采购数量"
                                    DockPanel.Dock="Top"
                                    Text="{Binding SelectPurchaseGoods.BuyNum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                                    <i:Interaction.Triggers>
                                        <i:EventTrigger EventName="TextChanged">
                                            <i:InvokeCommandAction Command="{Binding Path=DataContext.BuyNumTextChanged, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding}" />
                                        </i:EventTrigger>
                                    </i:Interaction.Triggers>
                                </TextBox>

                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Width="100" Header="生产日期">

                        <DataGridTemplateColumn.CellTemplate>
                            <!--  https://www.cnblogs.com/fdyang/p/10160503.html  -->
                            <!--  (WPF) Textbox 每次输入触发事件处理  -->
                            <DataTemplate>
                                <DatePicker
                                    Grid.Row="0"
                                    md:HintAssist.Hint="预计到货时间"
                                    DisplayDate="2019-01-01"
                                    SelectedDate="{Binding ActiveTime}"
                                    Style="{StaticResource MaterialDesignFilledDatePicker}">
                                    <i:Interaction.Triggers>
                                        <i:EventTrigger EventName="TextChanged">
                                            <i:InvokeCommandAction Command="{Binding Path=DataContext.BuyNumTextChanged, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding}" />
                                        </i:EventTrigger>
                                    </i:Interaction.Triggers>
                                </DatePicker>

                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>
DataGridTemplateColumn

 

 

2、给文本框赋予点击事件:----在其文本发生改变时触发事件

https://www.cnblogs.com/fdyang/p/10160503.html         --文档中的触发事件此博客是在对应viewModel.cs文件中实现的,不是在xaml.cs中

  <!--  https://www.cnblogs.com/fdyang/p/10160503.html  -->
                            <!--  (WPF) Textbox 每次输入触发事件处理  -->
                            <!--引入资源  xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"-->
                            <DataTemplate>
                                <TextBox
                                    md:HintAssist.Hint="采购数量"
                                    DockPanel.Dock="Top"
                                    Text="{Binding SelectPurchaseGoods.BuyNum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                                    <i:Interaction.Triggers>
                                        <i:EventTrigger EventName="TextChanged">
                                            <i:InvokeCommandAction Command="{Binding Path=DataContext.BuyNumTextChanged, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding}" />
                                        </i:EventTrigger>
                                    </i:Interaction.Triggers>
                                </TextBox>
                            </DataTemplate>
DataTemplate

 

3、对应.cs中实现双向绑定数据,并编写修改文本框数据时触发的事件

 

 

posted @ 2022-07-01 21:44  じ逐梦  阅读(1421)  评论(0)    收藏  举报