Hi,
i´m testing the xamNumericEditor. I´m using MVVM. I will bind the value-property of xamNumericEdior to a property with value int32=4711 in my viewmodel. When the app is running and i delete the value in the view, in my viewmodel, the last value int32=4 is stored. Is that a bug?
best regards from Germany
Christian
If you delete the value of the XamNumericEditor, it will return null and will try to save that in the underlying object (if you have set the binding mode to TwoWay). Is your property int? or int ? In the binding, have you set the UpdateSourceTrigger property ? I tried this and when I delete the value of the editor, null is the result. If that is not the case, can you please provide a sample that reproduces the issue?
Hi Alex,
our underlying datatype is int (not nullable). Binding mode is TwoWay.We cannot use nullable types because our values simply must never be Null.
In case of an empty editor the underlying object should be set to it's default value (e.g. Numeric types should be 0).
Compare this behavior with the XamMaskedEditor which is bound to a string. The underlying string will be "" (String.Empty) if the editor is empty (not Null).
In this case, you can set a value constraint on that editor and disallow nullable values:
<igEidotrs:XamNumericEditor Height="30" VerticalAlignment="Top">
<igEidotrs:XamNumericEditor.ValueConstraint>
<igEidotrs:ValueConstraint Nullable="False"/>
</igEidotrs:XamNumericEditor.ValueConstraint>
</igEidotrs:XamNumericEditor>
This way the XamNumericEditor will not allow you to leave the value empty.
how do I write that in CodeBehind?
When I write:
XamNumericEditor _numericEditor = new XamNumericEditor();
_numericEditor.ValueConstraint.Nullable = false;
In runtime I become an error.
You will need to create a ValueConstraint object and set its nullable property.
ValueConstraint constraint = new ValueConstraint();
constraint.Nullable = false;
_numericEditor.ValueConstraint = constraint;
The sample does no longer seem to apply, I can't find a property "EditorValue" to bind to.
This works for me, however:
<Style TargetType="{x:Type igEditors:ValueEditor}"> <Setter Property="ValueConstraint"> <Setter.Value> <igEditors:ValueConstraint Nullable="False" /> </Setter.Value> </Setter> <EventSetter Event="EditModeValidationError" Handler="EditModeValidationErrorHandler"/> </Style.Setters> </Style>
private void EditModeValidationErrorHandler(object sender, EditModeValidationErrorEventArgs e) { if (e.Editor.Value == null) { e.Handled = true; e.Editor.Value = 0; } }
This sounds like an issue that was recently reported and addressed in the latest hotfix for 9.2. Please try downloading the latest hotfix and see if you still get the problem.
Hi
I have some kind of performance problem, I'm working with MVVM, I have 15 xamNumericEditor controls on the screem with this constraint :
<
my:XamNumericEditor.ValueConstraint>
<my:ValueConstraint MinInclusive="0.00" MaxInclusive="100.00" />
</my:XamNumericEditor.ValueConstraint>
I retrive the values for each control from an object collection that it's shown in a xamDataGrid, but it takes a couple of seconds, however when I delete all the constraints it takes no time.
am I missing something ?
Hi Vlad,
that´s what i need!
Thank you very much!
Christian,
There is no property that is responsible for the default value and as I can see the revert value will return your last valid value and the retain value will return the last valid digit because of the PropertyChanged trigger. I suggest you to use a converter for the editor's Value instead, where you can check if the value is null and return 0. I'm attaching a sample so you can check it out.
Let me know if you have any questions.