0
我有一个datagrid用户输入值。这里是一列:限制datagrids单元格中的小数位数
<datagrid:ThemedDataGrid AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="True" ItemsSource="{Binding Model.ItemCollection, UpdateSourceTrigger=PropertyChanged}"
SelectionUnit="FullRow"
SelectedItem="{Binding Model.SelectedItem}" >
<datagrid:ThemedDataGrid.Columns >
<datagrideditors:DataGridDoubleColumn Binding="{Binding OFFSET, UpdateSourceTrigger=PropertyChanged}" Header="{DynamicResource Offset}" />
</datagrid:ThemedDataGrid.Columns>
</datagrid:ThemedDataGrid>
我需要允许用户只输入小数部分的5个数字。所以我制作的特性抵消这种方式:
public new double OFFSET
{
get { return _offset; }
set
{
int count = 0;
bool isSeparator = false;
char a = Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
var formatted = value.ToString().ToCharArray();
foreach (var y in formatted)
{
if (!isSeparator)
{
if (y == a)
{
isSeparator = true;
}
}
else
{
count++;
}
}
if (isSeparator)
{
if (count > 5)
{
return;
}
}
_offset = value;
OnPropertyChanged();
}
}
不允许用户在小数部分进入第六位,在这里,他希望用户可以输入尽可能多的数字,只有当他输入的值,小数值以小数部分的5位数字更改为值。
如何解决这个问题?
对不起,我的英语。当第六位数字在逗号后输入时,我想删除它,所以逗号后总是只有5位数 – Sasha
我回答了你的问题。为_offset指定一个值,后面只有5位数字。并调用OnPropertyChanged(); – Paparazzi
这不是我想要的。我希望第六位数字在输入后被删除。这就是为什么我有if(count> 5){return; } - 所以五位数的旧值不会被改变。并且,如果您建议,我可以输入10或20位数字,该值将在CellEditEnding事件后格式化 – Sasha