WPF Dependency Property not being set

.net, c#, wpf, xaml

Solution

Thanks to @Danko for getting me started. I registered a callback to set the value when the property changes. Here's what I finally ended up with:

private static void OnDefectIdChanged(DependencyObject defectImageControl, DependencyPropertyChangedEventArgs eventArgs)
{
  var control = (DefectImages) defectImageControl;
  control.DefectID = (Guid)eventArgs.NewValue;
}

/// <summary>
/// Registers a dependency property, enables us to bind to it via XAML
/// </summary>
public static readonly DependencyProperty DefectIdProperty = DependencyProperty.Register(
    "DefectID",
    typeof (Guid),
    typeof (DefectImages),
    new FrameworkPropertyMetadata(
      // use an empty Guid as default value
      Guid.Empty,
      // tell the binding system that this property affects how the control gets rendered
      FrameworkPropertyMetadataOptions.AffectsRender, 
      // run this callback when the property changes
      OnDefectIdChanged 
      )
    );

/// <summary>
/// DefectId accessor for for each instance of this control
/// Gets and sets the underlying dependency property value
/// </summary>
public Guid DefectID
{
  get { return (Guid) GetValue(DefectIdProperty); }
  set { SetValue(DefectIdProperty, value); }
}

Problem

I am trying to bind a dependency property via XAML to my custom WPF control. Here's how I register the dependency property: ``` public static readonly DependencyProperty AltNamesProperty = DependencyProperty.Register ("AltNames", typeof(string), typeof(DefectImages)); public string AltNames { get { return (string) GetValue(AltNamesProperty); } set { SetValue(AltNamesProperty, value); } } ``` And Here's how I call it in my XAML: ``` <DataGrid.Columns> <DataGridTemplateColumn IsReadOnly="True"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <StackPanel Name="StackPanel1" Grid.Column="0" Width="950"> <TextBlock FontSize="16" TextDecorations="None" Text="{BindingPath=StandardName}" Foreground="Black" FontWeight="Bold" Padding="5,10,0,0"></TextBlock> <TextBlock Text="{Binding Path=AltNames}"TextWrapping="WrapWithOverflow" Padding="5,0,0,10"></TextBlock> <!-- this part should be magic!! --> <controls:DefectImages AltNames="{Binding Path=AltNames}"></controls:DefectImages> </StackPanel> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> ``` I know the `AltNames` property that I'm attempting to bind to is a valid property because I can display it in a textblock just fine. Am I registering the Dependency property incorrectly? What do I need to do to get the correct value assigned to `AltNames` in my code behind?

Original source

Related problems