0

EventToCommand在用户插入价格和数量后,我正在使用 Galasoft 的代码来更新 Line Total 单元格。当我插入价格、数量并按 Enter 时,请帮我找到适当的方法来更改 Line Total。我试过InputBindings了,但不幸的是没有用。

这是我的视图中的 Datagrid XAML:

<DataGrid  IsReadOnly="False" x:Name="_StockCardItems"  ItemsSource="{Binding InvoiceDetailsList, Mode=TwoWay}" SelectedItem="{Binding SelectedItem}"  CanUserDeleteRows="True" CanUserAddRows="False">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="CurrentCellChanged">
            <gs:EventToCommand PassEventArgsToCommand="True" Command="{Binding CurrentCellChangedCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>

    <DataGrid.InputBindings>
        <KeyBinding Key="Enter" Command="{Binding CurrentCellChangedCommand}"/>
    </DataGrid.InputBindings>

    <DataGrid.Columns>

        <DataGridTemplateColumn Header="Désignation" Width="400" IsReadOnly="True">
            <DataGridTemplateColumn.CellTemplate  >
                <DataTemplate>
                    <TextBlock Margin="10,2" HorizontalAlignment="Left" Text="{Binding Path=Items.Designation}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn Header="Quantité"  Width="150" IsReadOnly="False">
            <DataGridTemplateColumn.CellTemplate  >
                <DataTemplate>
                    <TextBox  Margin="10,0" HorizontalAlignment="Center" GotKeyboardFocus="TextBox_GotKeyboardFocus" GotMouseCapture="TextBox_GotMouseCapture" IsReadOnly="False"  Text="{Binding Path=Quantity, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource RemoveDoubleZero}}"  />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn   Header="PU"  Width="150" >
            <DataGridTemplateColumn.CellTemplate >
                <DataTemplate>
                    <TextBox  Margin="10,0" HorizontalAlignment="Center" IsReadOnly="False" GotKeyboardFocus="TextBox_GotKeyboardFocus" GotMouseCapture="TextBox_GotMouseCapture"  Text="{Binding Path=UnitePrice, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource RemoveDoubleZero}}"  />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn Header="Montant HT"  Width="150" >
            <DataGridTemplateColumn.CellTemplate >
                <DataTemplate>
                    <TextBlock Margin="10,2" HorizontalAlignment="Right" Text="{Binding Path=Line_Total,Mode=TwoWay,ValidatesOnExceptions=True,ValidatesOnDataErrors=True, StringFormat=n, ConverterCulture=fr-FR}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

    </DataGrid.Columns>
</DataGrid>

这是CurrentCellChangedCommandViewModel 中的执行方法(SelectedItem是一个 EF 实体):

private void RecalculateLineTotal()
{
    if (SelectedItem != null)
    SelectedItem.Line_Total = SelectedItem.Quantity * SelectedItem.UnitePrice;
}

提前致谢

4

1 回答 1

0

一段时间后它开始正常工作。我认为这是一些额外的东西阻止了那些按键工作。

于 2012-08-27T22:19:39.557 回答