I am trying to bind a dependency property to a collection’s current selection and for reasons I can’t seem to grasp, the binding does not update when the collection changes.
In the example below, I show two example. One is updating correctly (on the textblock/run), and the other only displays the initial element and doesn’t change when the data grid selection changes.
<Grid>
<Grid.Resources>
<CollectionViewSource Source="{Binding Path=List}" x:Key="myViewModel"/>
<my:UpdateNotWorking MyObjModel="{Binding Source={StaticResource myViewModel}, Path=CurrentItem}" x:Key="updateNotWorking" />
</Grid.Resources>
<DataGrid ItemsSource="{Binding Source={StaticResource myViewModel}}" Name="mylistbox"/>
<TextBlock TextWrapping="Wrap" FontWeight="Bold" Foreground="#FF50CEFF" FontSize="24" TextAlignment="Center" Height="75">
<Run Text="{Binding Source={StaticResource myViewModel}, Path=text}" Foreground="#FF00E200" />
</TextBlock>
<TextBox Text="{Binding Source={StaticResource updateNotWorking}, Path=MyObjModel.text}" Height="22"/>
</Grid>
My dependency property in this example is “MyObjModel” on the “UpdateNotWorking” dependency object which is instantiated from the xaml code.
I would appreciate any information as to why my property is not updating correctly.
Paste this XAML into your MainWindow.
What it is now doing is setting
updateNotWorking‘sMyObjModelproperty based on the DataGrid’sSelectedValue, withUpdatePropertyTriggerset toPropertyChangedto see the changes immediately. No longer do we need to defineupdateNotWorking‘s property through the List’s CurrentItem because it is not going to change just by selecting it with a DataGrid. You can keep it set, but it is not required as we are doing all the manual labor with theDataGrid SelectedValue.