![]() | |
![]() |
| | Thread Tools | Search this Thread | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
I am binding a 3-state checkbox to an XElement: CheckBox Content="Summary" IsChecked="{Binding Path=Element[StatusSummary].Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsThreeState="True" IsEnabled="False" Margin="0,79,0,0"/ it properly reports True and False when it is checked or unchecked. but it retains the previous value when in the intermediate state. it would seem to not be firing the propertychanged event to update the xelement when transitioning to the indeterminate state. Is there a way to bind to get back the null for indeterminate? |
#3
| |||
| |||
|
|
haven't tried it as you have below, but i tried to check this intuitively with a checkchanged event updating a label. Me.Label1.Text = Me.CheckBox1.CheckState i found that the indeterminate value did not fire an event with then CheckBox1_CheckedChanged event, it did work with CheckBox1_CheckStateChanged. So you might try checking against that event instead -- -John Please rate when your question is answered to help us and others know what is helpful. "dave" wrote: I am binding a 3-state checkbox to an XElement: CheckBox Content="Summary" IsChecked="{Binding Path=Element[StatusSummary].Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsThreeState="True" IsEnabled="False" Margin="0,79,0,0"/ it properly reports True and False when it is checked or unchecked. but it retains the previous value when in the intermediate state. it would seem to not be firing the propertychanged event to update the xelement when transitioning to the indeterminate state. Is there a way to bind to get back the null for indeterminate? |
#4
| |||
| |||
|
|
I know the events for indeterminate state transitions are different, but in the databinding you just get to specify the property you want to bind to and the trigger mechanism for updating the source. Unfortunately you can't specify the event to do the update unless you add your own event handler and use the manual method to call updatesource. It appears that the trigger mechanism doesn't recognize transitions to indeterminate, only to checked or unchecked. "John Bundy" wrote: haven't tried it as you have below, but i tried to check this intuitively with a checkchanged event updating a label. Me.Label1.Text = Me.CheckBox1.CheckState i found that the indeterminate value did not fire an event with then CheckBox1_CheckedChanged event, it did work with CheckBox1_CheckStateChanged. So you might try checking against that event instead -- -John Please rate when your question is answered to help us and others know what is helpful. "dave" wrote: I am binding a 3-state checkbox to an XElement: CheckBox Content="Summary" IsChecked="{Binding Path=Element[StatusSummary].Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsThreeState="True" IsEnabled="False" Margin="0,79,0,0"/ it properly reports True and False when it is checked or unchecked. but it retains the previous value when in the intermediate state. it would seem to not be firing the propertychanged event to update the xelement when transitioning to the indeterminate state. Is there a way to bind to get back the null for indeterminate? |
#5
| |||
| |||
|
|
More info... i was missing something, there is an error generated when it tries to set the null value back to the xml: System.Windows.Data Error: 8 : Cannot save value from target back to source. BindingExpression:Path=Element[StatusSummary].Value; DataItem='XElement' (HashCode=51920462); target element is 'CheckBox' (Name=''); target property is 'IsChecked' (type 'Nullable`1') ArgumentNullException:'System.ArgumentNullExceptio n: Value cannot be null. Parameter name: value at System.Xml.Linq.XElement.set_Value(String value) at System.Xml.Linq.ComponentModel.XElementValueProper tyDescriptor.SetValue(Object component, Object value) at MS.Internal.Data.PropertyPathWorker.SetValue(Objec t item, Object value) at MS.Internal.Data.ClrBindingWorker.UpdateValue(Obje ct value) at System.Windows.Data.BindingExpression.UpdateSource (Object value)' So it looks like the set_Value for a string can't handle the null for the checkbox in tristate mode. "dave" wrote: I know the events for indeterminate state transitions are different, but in the databinding you just get to specify the property you want to bind to and the trigger mechanism for updating the source. Unfortunately you can't specify the event to do the update unless you add your own event handler and use the manual method to call updatesource. It appears that the trigger mechanism doesn't recognize transitions to indeterminate, only to checked or unchecked. "John Bundy" wrote: haven't tried it as you have below, but i tried to check this intuitively with a checkchanged event updating a label. Me.Label1.Text = Me.CheckBox1.CheckState i found that the indeterminate value did not fire an event with then CheckBox1_CheckedChanged event, it did work with CheckBox1_CheckStateChanged. So you might try checking against that event instead -- -John Please rate when your question is answered to help us and others know what is helpful. "dave" wrote: I am binding a 3-state checkbox to an XElement: CheckBox Content="Summary" IsChecked="{Binding Path=Element[StatusSummary].Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsThreeState="True" IsEnabled="False" Margin="0,79,0,0"/ it properly reports True and False when it is checked or unchecked. but it retains the previous value when in the intermediate state. it would seem to not be firing the propertychanged event to update the xelement when transitioning to the indeterminate state. Is there a way to bind to get back the null for indeterminate? |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
| |