WPF custom ContentPresenter does not bind properties

310 views Asked by At

I have a custom class derived from ContentPresenter which has a DepenedencyProperty. However, when I attempt to bind it, nothing happens (Source's getter is not called, content is not updated, no errors are logged in Trace):

public class IsReadOnlyCellPresenter : ContentPresenter
{
    [Bindable(true)]
    public string Text
    {
        get { return (string)GetValue(TextProperty); }
        set { SetValue(TextProperty, value); }
    }

    public static readonly DependencyProperty TextProperty =
        DependencyProperty.Register("Text", typeof(string), typeof(IsReadOnlyCellPresenter), new FrameworkPropertyMetadata(null));
}

xaml:

<local:IsReadOnlyCellPresenter Text="{Binding Path=MyProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
    <local:IsReadOnlyCellPresenter.ContentTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Text, RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
        </DataTemplate>
    </local:IsReadOnlyCellPresenter.ContentTemplate>
</local:IsReadOnlyCellPresenter>

If I use static value (e.g. Text="Foo") it works as expected. If I derive from ContentControl (class IsReadOnlyCellPresenter : ContentControl), the Text binding works but not Mode=TemplatedParent which points to nowhere.
What is the issue with ContentPresenter here? Can ContentPresenter be derived from?

0

There are 0 answers