WPF MVVM中处于编辑模式的DataGrid单元格不接受小数点作为十进制值。

3
我有一个DataGrid,其列绑定到ViewModel Decimal属性。
当从ViewModel添加值时,十进制值会显示出来,但是当我编辑同一单元格并删除内容然后添加时,该单元格不接受 . 句点。如何编辑单元格呢?
<DataGrid Name="dgSales" Height="300" Margin="0,3,0,0" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding SelectedItem,Converter={StaticResource ignoreNewItemPlaceHolderConverter}}" ItemsSource="{Binding StockList,UpdateSourceTrigger=PropertyChanged}" ToolTip="{Binding RelativeSource={RelativeSource Self},Path=(Validation.Errors)[0].ErrorContent}" GotKeyboardFocus="dgSales_GotKeyboardFocus" CurrentCellChanged="dgSales_CurrentCellChanged">
    <DataGrid.Columns>
        <DataGridTextColumn Header="S No." Width="SizeToCells" MinWidth="60" Binding="{Binding SNo}" IsReadOnly="True" />
        <DataGridTemplateColumn Header="Stock Name" Width="280">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                <TextBlock Text="{Binding StockName}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <ComboBox Width="280" Name="cmbStock" ItemsSource="{Binding Path=Stocks}" FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}" ></ComboBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Header="Unit Price" Width="SizeToCells" MinWidth="80" Binding="{Binding UnitPrice,UpdateSourceTrigger=PropertyChanged}" />
        <DataGridTextColumn Header="Unit" Width="SizeToCells" MinWidth="80" Binding="{Binding Unit}" IsReadOnly="True"/>
    <DataGridTextColumn Header="Quantity" Width="SizeToCells" MinWidth="80" Binding="{Binding Quantity,UpdateSourceTrigger=PropertyChanged}" />
        <DataGridTextColumn Header="Discount" Width="SizeToCells" MinWidth="80" Binding="{Binding Discount,UpdateSourceTrigger=PropertyChanged}"/>
        <DataGridTextColumn Header="Amount" Width="SizeToCells" MinWidth="100" Binding="{Binding Amount,StringFormat=\{0:n2\}}" IsReadOnly="True" />
    </DataGrid.Columns>
</DataGrid>                
1个回答

4
问题可能是你正在使用UpdateSourceTrigger=PropertyChanged,它会在每次按键时重新评估文本,而以小数点结尾的数字是无效的。 尝试删除UpdateSourceTrigger设置(因此恢复默认值- LostFocus)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接