Содержимое пользовательского элемента управления не может быть привязано к родительскому элементу элемента управления. - PullRequest
2 голосов
/ 28 февраля 2011

У меня следующий XAML (упрощенный, без конечных тегов):

<Window Name="myWindow" DataContext="{Binding ElementName=myWindow}" >
    <DockPanel>
        <tb:ToolBar Name="toolbar" DockPanel.Dock="Top">
            <tb:ToolBar.Items>
                <tb:ToolBarControl Priority="-3">
                    <tb:ToolBarControl.Content>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock>Maps:</TextBlock>
                            <ComboBox ItemsSource="{Binding Generator.Maps, ElementName=myWindow}">

Но привязка ComboBox не удастся с

Не удается найти источник для связывания с ссылка 'ElementName = myWindow'

Некоторые факты о пользовательских элементах управления:

  • tb:ToolBar - это UserControl, который содержит фактический ToolBar с ItemsSource, привязанным к свойству Items tb:ToolBar (наследуемого типа IList).

  • ToolBar ToolBarItem DataTemplate выбирается из нескольких DataTemplate с (в зависимости от типа предмета).

  • DataTemplate, принадлежащий tb:ToolBarControl, очень прост - он содержит ContentPresenter, привязанный к свойству Content tb:ToolBarControl.

  • tb:ToolBarControl не по техническим причинам UserControl, это просто DependencyObject со свойством Content типа object.

Почему ComboBox не может ссылаться на Window?

Спасибо за любую помощь!

1 Ответ

3 голосов
/ 28 февраля 2011

У меня была похожая проблема:

Привязки к дочернему объекту зависимости usercontrol не работают

У DependencyObject нет DataContext, и я думаю, чтопривязка не работает.Вместо наследования от 'DependencyObject' попробуйте наследовать от FrameworkElement.

...