I get this trace information for the binding:
System.Windows.Data Warning: 55 : Created BindingExpression (hash=45919010) for Binding (hash=4523055)
Sys
I realy do not know WHY but this street magic helped!
It was:
<Setter Property="Helpers:FocusHelper.IsFocused" Value="{Binding IsEnvelopeFocused,
Converter={StaticResource bdc},
PresentationTraceSources.TraceLevel=High}"/>
It became:
<Setter Property="Helpers:FocusHelper.IsFocused" Value="{Binding DataContext.IsEnvelopeFocused,
Converter={StaticResource bdc},
PresentationTraceSources.TraceLevel=High,
RelativeSource={RelativeSource Self}}"/>
Data binding trace output changed:
System.Windows.Data Warning: 55 : Created BindingExpression (hash=52742621) for Binding (hash=33023833)
System.Windows.Data Warning: 57 : Path: 'DataContext.IsEnvelopeFocused'
System.Windows.Data Warning: 59 : BindingExpression (hash=52742621): Default mode resolved to TwoWay
System.Windows.Data Warning: 60 : BindingExpression (hash=52742621): Default update trigger resolved to PropertyChanged
System.Windows.Data Warning: 61 : BindingExpression (hash=52742621): Attach to System.Windows.Controls.DataGridCell.IsFocused (hash=34022436)
System.Windows.Data Warning: 66 : BindingExpression (hash=52742621): Resolving source
System.Windows.Data Warning: 69 : BindingExpression (hash=52742621): Found data context element: <null> (OK)
System.Windows.Data Warning: 71 : RelativeSource.Self found DataGridCell (hash=34022436)
System.Windows.Data Warning: 77 : BindingExpression (hash=52742621): Activate with root item DataGridCell (hash=34022436)
System.Windows.Data Warning: 106 : BindingExpression (hash=52742621): At level 0 using cached accessor for DataGridCell.DataContext: DependencyProperty(DataContext)
System.Windows.Data Warning: 103 : BindingExpression (hash=52742621): Replace item at level 0 with DataGridCell (hash=34022436), using accessor DependencyProperty(DataContext)
System.Windows.Data Warning: 100 : BindingExpression (hash=52742621): GetValue at level 0 from DataGridCell (hash=34022436) using DependencyProperty(DataContext): VulnerEnvelope (hash=14963839)
System.Windows.Data Warning: 106 : BindingExpression (hash=52742621): At level 1 using cached accessor for VulnerEnvelope.IsEnvelopeFocused: RuntimePropertyInfo(IsEnvelopeFocused)
System.Windows.Data Warning: 103 : BindingExpression (hash=52742621): Replace item at level 1 with VulnerEnvelope (hash=14963839), using accessor RuntimePropertyInfo(IsEnvelopeFocused)
System.Windows.Data Warning: 100 : BindingExpression (hash=52742621): GetValue at level 1 from VulnerEnvelope (hash=14963839) using RuntimePropertyInfo(IsEnvelopeFocused): 'False'
System.Windows.Data Warning: 79 : BindingExpression (hash=52742621): TransferValue - got raw value 'False'
System.Windows.Data Warning: 81 : BindingExpression (hash=52742621): TransferValue - user's converter produced 'False'
System.Windows.Data Warning: 88 : BindingExpression (hash=52742621): TransferValue - using final value 'False'
And binding now works in both ways.
I thinks there's a broblem with DataGridCell's DataContext inheritance and style appplication.
To be exact the order matters here, I suppose.
If Style is applied first Data Binding tries to get not yet inherited DataContext and that somehow breaks binding causing no updates.
I'll try to reproduce this bug and if I manage to do it, I'll write to MS Connect.