2012-04-24 50 views
2

我有一个DataGrid,其列绑定到ViewModel Decimal Properties。编辑模式DataGrid单元格不接受。(Dot)为WPF MVVM中的最小值

从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>     

回答

2

问题可能是您正在使用UpdateSourceTrigger=PropertyChanged从而重新演算值为每个按键的文字和数字,在小数点结束无效。 尝试删除UpdateSourceTrigger设置(因此恢复为默认 - LostFocus)