WPF - Какие условия должны быть соблюдены, чтобы использовать привязку данных по содержаниюпользовательских элементов управления ?

я нахожусь в процессе создания таможенного контроля-в частности круговой диаграммы. Я хочу, чтобы разметку, чтобы выглядеть как в этом примере:

<c:PieChart>
    <!-- These dependency properties are never set -->
    <c:Slice Value="{Binding RedCount}" />
    <c:Slice Value="{Binding BlueCount}" />
    <c:Slice Value="{Binding GreenCount}" />
</c:PieChart>

PieChart происходит от Control:

[ContentProperty("Slices")]
public class PieChart : Control
{
    public PieChart()
    {
        Slices = new ObservableCollection<Slice>();
    }

    public ObservableCollection<Slice> Slices { get; private set; }
}

над XAML вызывает Slices свойство заполняться в трех экземплярах Slice.

Вот фрагмент из Slice:

public class Slice : ContentControl
{
    public static DependencyProperty ValueProperty
        = DependencyProperty.Register(
            "Value", typeof(double), typeof(Slice),
            new PropertyMetadata((p,a) => ((Slice)p).OnValueChanged(a)));

    private void OnValueChanged(DependencyPropertyChangedEventArgs e)
    {
        // This code never called!
    }
}

проблема Value недвижимость Slice никогда не устанавливается. Если я ставлю в зависимость собственности на PieChart и скопировать выражение привязки, тогда имеет значение, поэтому я уверен, что я понимаю, основы свойства зависимости.

Итак, что я должен сделать, чтобы моя зависимость свойству присвоено значение дочернего элемента? Так как эти предметы в моей коллекции, они как-то не в логическом дереве, признанная независимо магия делает привязки работы?

простой 'сделай это' ответ будет полезным, но я бы очень хотел, чтобы понять, что идет не здесь, поэтому я приму самые проницательные, толковый ответ написал.

" ИЗМЕНИТЬ". я не ясно, но есть некоторые окружающего объект на DataContext PieChart, который содержит свойства RedCount, и др. В прошлом, когда я была опечатка в привязке пути (или некоторые другие ошибки) я видел предупреждения в выходное окно во время выполнения. В этом случае, я ничего не вижу.

Найдено 2 ответа:

WPF - What conditions must be met to use data binding in a custom control's content items?

http://stackoverflow.com/questions/795184/wpf-what-conditions-must-be-met-to-use-data-binding-in-a-custom-controls-cont

Посмотреть решение →