Я пытаюсь получить привязку для работы над дочерним объектом пользовательского элемента управления. Xaml выглядит так:
<MyGrid>
<MyColumn ExtendedColumnData="{Binding ColumnToolTipDescriptions}"/>
</MyGrid>
Вот как определяются классы:
[ContentProperty("Columns")]
public class MyGrid : UserControl
{
private MyColumnCollection _columns;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("Data")]
public MyColumnCollection Columns
{
get
{
if (_columns == null)
_columns = new MyColumnCollection();
return _columns;
}
}
}
public class MyColumnCollection : ObservableCollection<MyGridColumn>
{
}
public class MyGridColumn : DependencyObject
{
public object ExtendedColumnData
{
get { return (object)GetValue(ExtendedColumnDataProperty); }
set { SetValue(ExtendedColumnDataProperty, value); }
}
public static readonly DependencyProperty ExtendedColumnDataProperty =
DependencyProperty.Register("ExtendedColumnData", typeof(object), typeof(MyGridColumn), new UIPropertyMetadata(null));
}
Из того, что я могу сказать, привязка даже не пытается получить данные, так как я пытался сопоставить преобразователь с привязкой, и точка останова в методе Convert никогда не получает удар.
Я использую шаблон MVVM, поэтому свойство DataContext
окна установлено на модель представления.
Я прочитал некоторые другие вопросы здесь и попробовал различные перестановки связывания, такие как:
<MyColumn ExtendedColumnData="{Binding DataContext.ColumnToolTipDescriptions, ElementName=MyViewName}" />
<MyColumn ExtendedColumnData="{Binding DataContext.ColumnToolTipDescriptions, RelativeSource={RelativeSource AncestorType={x:Type local:MyView}}" />
Но все равно не повезло, переплет не срабатывает! Раздражает то, что это работает нормально (если я добавлю свойство в сетку):
<MyGrid ExtendedColumnData="{Binding ColumnToolTipDescriptions}">
<MyColumn />
</MyGrid>
У меня нет опыта работы с WPF, поэтому я уверен, что что-то упустил?