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>
CurrentCellChangedCommand
ViewModel の実行メソッドは次のとおりです (はSelectedItem
EF エンティティです)。
private void RecalculateLineTotal()
{
if (SelectedItem != null)
SelectedItem.Line_Total = SelectedItem.Quantity * SelectedItem.UnitePrice;
}
前もって感謝します