WPF DataGridTextColumn binding doesn't accept

2020-02-14 01:07发布

问题:

I don't understand what the problem could be. The binding is on a Decimal property. Here is the XAML:

<DataGridTextColumn Header="Price" Binding="{Binding Price, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged} Width="*"/>

I literally cannot type the '.' character. Why would it stop me from typing that character and how do I tell it to let me do so.

I tried doing a string format like this:

<DataGridTextColumn Header="Price" Binding="{Binding Price, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:n2}} Width="*"/>

But this doesn't solve my problem because all it does is append ".00" to the end of whatever I type.

All I need is permission to type the period.

UPDATE:

I was directed here. I removed the UpdateSourceTrigger property and this made it possible for me to type a '.'. I do not have 4.5 Beta installed and my localization settings are correct. So now my question is how do I get the DataGridTextColumn to allow me to type '.' with an UpdateSourceTrigger property set?

回答1:

UpdateSourceTrigger=PropertyChanged reevalutes the text on every keystroke. A number that ends in a decimal point is invalid. Change the UpdateSourceTrigger to LostFocus (same as removing it) or try to type the '.' while you have other digits after it.