Search code examples
c#wpfcode-behinddata-binding

WPF Bind to class member in code behind


Pretty simple question, but can't seem to find a complete answer on here...

I need to databind in xaml to a property of a class member in codebehind.

<Window x:Class="Main">
    <customcontrol Name="View" IsChecked="{Binding ElementName=RecordProp, Path=IsViewChecked}" />
...

Where the code behind looks like:

class Main 
{    
    ...
    private Record _record;
    public Record RecordProp
    {
      get { return _record; }
    }
    ...
}


class Record
{
  public bool IsViewChecked
  {
    get; set;
  }
}

What I've got now doesn't work, what am I doing wrong?


Solution

  • Path needs a Source to go against (Source, DataContext, RelativeSource, ElementName). ElementName can only be used to refer to elements declared in XAML by their x:Name. Try this instead to point to your Window as the source:

    IsChecked="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=RecordProp.IsViewChecked}"