0

EventToCommandユーザーが価格と数量を挿入した後に Line Total セルを更新するために、以下のコードとして Galasoft を使用しています。価格、数量を挿入して Enter キーを押したときに明細合計を変更する適切な方法を見つけるのを手伝ってください。試してみ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 の実行メソッドは次のとおりです (はSelectedItemEF エンティティです)。

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

前もって感謝します

4

1 に答える 1

0

しばらくすると正常に動作するようになりました。それは、これらのキーストロークが機能するのを妨げていた余分なものだったと思います.

于 2012-08-27T22:19:39.557 に答える